std:: compare_partial_order_fallback
|
Defined in header
<compare>
|
||
|
inline
namespace
/* unspecified */
{
inline
constexpr
/* unspecified */
|
(since C++20) | |
|
Call signature
|
||
|
template
<
class
T,
class
U
>
requires
/* see below */
|
(since C++20) | |
Performs three-way comparison on
subexpressions
t
and
u
and produces a result of type
std::partial_ordering
, even if the operator
<=>
is unavailable.
If std:: decay_t < T > and std:: decay_t < U >> are the same type, std :: compare_partial_order_fallback ( t, u ) is expression-equivalent to:
- std:: partial_order ( t, u ) , if it is a well-formed expression;
-
otherwise,
t
==
u
?
std
::
partial_ordering
::
equivalent
:
t < u ? std :: partial_ordering :: less :
u < t ? std :: partial_ordering :: greater :
std :: partial_ordering :: unordered , if the expressions t == u , t < u and u < t are all well-formed and each of decltype ( t == u ) , decltype ( t < u ) and decltype ( u < t ) models boolean-testable , except that t and u are evaluated only once.
In all other cases, std :: compare_partial_order_fallback ( t, u ) is ill-formed, which can result in substitution failure when it appears in the immediate context of a template instantiation.
Contents |
Customization point objects
The name
std::compare_partial_order_fallback
denotes a
customization point object
, which is a const
function object
of a
literal
semiregular
class type. See
CustomizationPointObject
for details.
Example
|
This section is incomplete
Reason: no example |
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
|
LWG 2114
( P2167R3 ) |
C++20 |
the fallback mechanism only required
return types to be convertible to bool |
constraints strengthened |
| LWG 3465 | C++20 | the fallback mechanism did not require u < t to be well-formed | required |
| LWG 4157 | C++20 | P2167R3 overwrote the resolution of LWG issue 3465 | restored the resolution |
See also
|
(C++20)
|
performs 3-way comparison and produces a result of type
std::partial_ordering
(customization point object) |