Namespaces
Variants

std:: compare_strong_order_fallback

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

inline constexpr /* unspecified */
compare_strong_order_fallback = /* unspecified */ ;

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

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

compare_strong_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::strong_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_strong_order_fallback ( t, u ) est équivalent en expression à :

  • std:: strong_order ( t, u ) , si c'est une expression bien formée ;
  • sinon, t == u ? std :: strong_ordering :: equal :
    t < u ? std :: strong_ordering :: less :
    std :: strong_ordering :: greater
si les expressions t == u et t < u sont toutes deux bien formées et que chacun de decltype ( t == u ) et decltype ( t < u ) modélise boolean-testable , sauf que t et u ne sont évalués qu'une seule fois.

Dans tous les autres cas, std :: compare_strong_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_strong_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 Applicable à Comportement publié Comportement corrigé
LWG 2114
( P2167R3 )
C++20 le mécanisme de repli exigeait seulement
que les types de retour soient convertibles en bool
contraintes renforcées

Voir aussi

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