std::common_comparison_category
Defined in header <compare> | ||
|---|---|---|
template<class... Ts>
struct common_comparison_category {
using type = /*see below*/ ;
};
| (since C++20) |
The class template std::common_comparison_category provides an alias (as the member typedef type) for the strongest comparison category to which all of the template arguments Ts... can be converted.
In detail, the common comparison type of a list of n types T0...Tn-1 is defined as follows:
- If any Ti is not a comparison category type (
std::weak_equality,std::strong_equality,std::partial_ordering,std::weak_ordering,std::strong_ordering), U isvoid. - Otherwise, if at least one Ti is
std::weak_equalityor at least one Ti isstd::strong_equalityand at least one Ti isstd::partial_orderingorstd::weak_ordering, U isstd::weak_equality - Otherwise, if at least one Ti is
std::strong_equality, U isstd::strong_equality - Otherwise, (if there is no
std::weak_equalityand nostd::strong_equality) if at least one Ti isstd::partial_ordering, U isstd::partial_ordering - Otherwise, if at least one Ti is
std::weak_ordering, U isstd::weak_ordering - Otherwise (if every Ti is
std::strong_ordering, or if the list is empty), U isstd::strong_ordering.
Template parameters
| ...Ts | - | a possibly empty list of types |
Helper template
template< class... Ts > using common_comparison_category_t = typename common_comparison_category<Ts...>::type; | (since C++20) |
Member types
| Member type | Definition |
|---|---|
type | the strongest common comparison category (as defined above) |
Example
See also
|
(C++20) | the result type of 3-way comparison that supports all 6 operators and is substitutable (class) |
|
(C++20) | the result type of 3-way comparison that supports all 6 operators and is not substitutable (class) |
|
(C++20) | the result type of 3-way comparison that supports all 6 operators, is not substitutable, and allows incomparable values (class) |
|
(C++20) | the result type of 3-way comparison that supports only equality/inequality and is substitutable (class) |
|
(C++20) | the result type of 3-way comparison that supports only equality/inequality and is not substitutable (class) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/utility/compare/common_comparison_category