std::compare_3way
From cppreference.com
Defined in header <algorithm>
|
||
template< class T, class U > constexpr auto compare_3way( const T& a, const U& b ); |
(since C++20) | |
Compares two values using three-way comparison and produces a result of the strongest applicable comparison category type.
In detail:
- If the expression a <=> b is well-formed, returns its result
- Otherwise, if the expressions a == b and a < b are both well-formed and convertible to bool,
- if a == b equals true, returns std::strong_ordering::equal
- otherwise, if a < b equals true, returns std::strong_ordering::less
- otherwise, returns std::strong_ordering::greater
- Otherwise, if the expression a == b is well-formed and convertible to bool (but a < b is not),
- if a == b equals true, returns std::strong_equality::equal
- otherwise, returns std::strong_equality::nonequal
- Otherwise (if neither a <=> b nor a == b are well-formed), the function is defined as deleted.
Parameters
a, b | - | the values to compare |
Return value
As defined above.
Notes
This function is useful in generic programming, since it uses < and == as fallbacks when <=> is not available.
Example
This section is incomplete Reason: no example |
See also
(C++20) |
compares two ranges using three-way comparison (function template) |
(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) |
(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) |