Namespaces
Variants

std:: compare_partial_order_fallback

From cppreference.net
Utilities library
Défini dans l'en-tête <compare>
inline namespace /* unspecified */ {

inline constexpr /* unspecified */
compare_partial_order_fallback = /* unspecified */ ;

}
(depuis C++20)
Signature d'appel
template < class T, class U >

requires /* see below */
constexpr std:: partial_ordering

compare_partial_order_fallback ( T && t, U && u ) noexcept ( /* 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

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

effectue une comparaison à trois voies et produit un résultat de type std::partial_ordering
(objet point de personnalisation)