Namespaces
Variants

std::partial_order

Depuis fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support linguistique
Support de type (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 (déprécié en C++20)
 
Défini dans l'en-tête <compare>
inline namespace /* unspecified */ {
    inline constexpr /* unspecified */ partial_order = /* unspecified */;
}
(depuis C++20)
Signature d'appel
template< class T, class U >
    requires /* see below */
constexpr std::partial_ordering
    partial_order( T&& t, U&& u ) noexcept(/* see below */);

Compare deux valeurs à l'aide d'une comparaison à trois voies et produit un résultat de type std::partial_ordering.

Soient t et u des expressions et T et U désignent respectivement decltype((t)) et decltype((u)), std::partial_order(t, u) est équivalent à une expression à :

  • Si std::is_same_v<std::decay_t<T>, std::decay_t<U>> est true :
    • std::partial_ordering(partial_order(t, u)), si c'est une expression bien formée avec une résolution de surcharge effectuée dans un contexte qui n'inclut pas une déclaration de std::partial_order,
    • sinon, std::partial_ordering(std::compare_three_way()(t, u)), si c'est bien formé,
    • sinon, std::partial_ordering(std::weak_order(t, u)), si c'est bien formé.
  • Dans tous les autres cas, l'expression est mal formée, ce qui peut entraîner un échec de substitution lorsqu'elle apparaît dans le contexte immédiat d'une instanciation de modèle.

Objets de point de personnalisation

Le nom std::partial_order désigne un objet de point de personnalisation , qui est un objet fonction constant de type classe littéral semiregular . Voir CustomizationPointObject pour plus de détails.

Exemple

Voir aussi

le type de résultat de la comparaison à trois voies qui prend en charge les 6 opérateurs, n'est pas substituable et permet des valeurs incomparables
(classe)
effectue une comparaison à trois voies et produit un résultat de type std::strong_ordering
(objet de point de personnalisation)
(C++20)
effectue une comparaison à trois voies et produit un résultat de type std::weak_ordering
(objet de point de personnalisation)
effectue une comparaison à trois voies et produit un résultat de type std::partial_ordering , même si operator <=> n'est pas disponible
(objet de point de personnalisation)