std:: compare_partial_order_fallback
|
Défini dans l'en-tête
<compare>
|
||
|
inline
namespace
/* unspecified */
{
inline
constexpr
/* unspecified */
|
(depuis C++20) | |
|
Signature d'appel
|
||
|
template
<
class
T,
class
U
>
requires
/* see below */
|
(depuis C++20) | |
Effectue une comparaison à trois voies sur les
sous-expressions
t
et
u
et produit un résultat de type
std::partial_ordering
, même si l'opérateur
<=>
n'est pas disponible.
Si std:: decay_t < T > et std:: decay_t < U >> sont du même type, std :: compare_partial_order_fallback ( t, u ) est équivalent-expression à :
- std:: partial_order ( t, u ) , si c'est une expression bien formée ;
-
sinon,
t
==
u
?
std
::
partial_ordering
::
equivalent
:
t < u ? std :: partial_ordering :: less :
u < t ? std :: partial_ordering :: greater :
std :: partial_ordering :: unordered , si les expressions t == u , t < u et u < t sont toutes bien formées et que chacun de decltype ( t == u ) , decltype ( t < u ) et decltype ( u < t ) modélise boolean-testable , sauf que t et u ne sont évalués qu'une seule fois.
Dans tous les autres cas, std :: compare_partial_order_fallback ( t, u ) est mal formé, ce qui peut entraîner une substitution failure lorsqu'il apparaît dans le contexte immédiat d'une instanciation de template.
Table des matières |
Objets de point de personnalisation
Le nom
std::compare_partial_order_fallback
désigne un
objet de point de personnalisation
, qui est un
objet fonction
constant d'un type de classe
littéral
semiregular
. Voir
CustomizationPointObject
pour plus de détails.
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement correct |
|---|---|---|---|
|
LWG 2114
( P2167R3 ) |
C++20 |
le mécanisme de repli exigeait seulement
que les types de retour soient convertibles en bool |
contraintes renforcées |
| LWG 3465 | C++20 | le mécanisme de repli n'exigeait pas que u < t soit bien formé | exigé |
| LWG 4157 | C++20 | P2167R3 a écrasé la résolution de LWG issue 3465 | a restauré la résolution |
Voir aussi
|
(C++20)
|
effectue une comparaison à trois voies et produit un résultat de type
std::partial_ordering
(objet point de personnalisation) |