std::strong_order
Defined in header <compare> | ||
---|---|---|
template< class T > constexpr std::strong_ordering strong_order(const T& a, const T& b); | (since C++20) |
Compares two values using 3-way comparison and produces a result of type std::strong_ordering
.
Specifically,
- First, if
std::numeric_limits<T>::is_iec559
istrue
, performs the ISO/IEC/IEEE 60559 totalOrder comparison of floating-point values and returns that result as a value of typestd::strong_ordering
(note: this comparison can distinguish between the positive and negative zero and between the NaNs with different representations) - Otherwise, if the expression
a <=> b
is well-formed and its result is convertible tostd::strong_ordering
, returns that result. - Otherwise, if the expression
a <=> b
is well-formed, but its result is not convertible tostd::strong_ordering
, then the function is defined as deleted. - Otherwise, if the expression
a <=> b
is ill-formed, but the expressionsa == b
anda < b
are both well-formed and convertible tobool
, - if
a == b
istrue
, returnsstd::strong_ordering::equal
- otherwise, if
a < b
istrue
, returnsstd::strong_ordering::less
- otherwise, returns
std::strong_ordering::greater
- Otherwise, the function is defined as deleted.
Parameters
a, b | - | values to compare |
Return value
A value of type std::strong_ordering
, as described above.
Notes
Example
See also
(C++20) | the result type of 3-way comparison that supports all 6 operators and is substitutable (class) |
(C++20) | performs 3-way comparison and produces a result of type std::weak_ordering (function template) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/utility/compare/strong_order