Namespaces
Variants

std::compare_partial_order_fallback

De fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support du langage
Support des types (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (obsolète en C++20)
 
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 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 à une expression de :

  • std::partial_order(t, u), s'il s'agit d'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 chacune de decltype(t == u), decltype(t < u) et decltype(u < t) modélise testable_booléen, sauf que t et u ne sont évaluées qu'une seule fois.

Dans tous les autres cas, std::compare_partial_order_fallback(t, u) est mal formé, ce qui peut entraîner un échec de substitution lorsqu'il apparaît dans le contexte immédiat d'une instanciation de modèle.

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)