Namespaces
Variants

std::partial_order

Von de.cppreference.net
 
 
Hilfsbibliothek
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programmhilfsmittel
Variadische Funktionen
Koroutinen-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Dreiseitiger Vergleich
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Allgemeine Hilfsmittel
Vergleichsoperatoren (veraltet in C++20)
Ganzzahlvergleichsfunktionen
(C++20)(C++20)(C++20)    
(C++20)
Swap und Typoperationen
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Allgemeine Vokabeltypen
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
Definiert in Header <compare>
inline namespace /* unspecified */ {
    inline constexpr /* unspecified */ partial_order = /* unspecified */;
}
(seit C++20)
Aufrufsignatur
template< class T, class U >
    requires /* see below */
constexpr std::partial_ordering
    partial_order( T&& t, U&& u ) noexcept(/* see below */);

Vergleicht zwei Werte mittels 3-Wege-Vergleich und erzeugt ein Ergebnis vom Typ std::partial_ordering.

Seien t und u Ausdrücke und seien T und U Bezeichner für decltype((t)) bzw. decltype((u)). std::partial_order(t, u) ist ausdrucksäquivalent zu:

  • Falls std::is_same_v<std::decay_t<T>, std::decay_t<U>> true ist:
    • std::partial_ordering(partial_order(t, u)), falls es ein wohldefinierter Ausdruck ist, bei dem die Überladungsauflösung in einem Kontext durchgeführt wird, der keine Deklaration von std::partial_order enthält;
    • andernfalls std::partial_ordering(std::compare_three_way()(t, u)), falls es wohldefiniert ist;
    • andernfalls std::partial_ordering(std::weak_order(t, u)), falls es wohldefiniert ist.
  • In allen anderen Fällen ist der Ausdruck nicht wohldefiniert, was zu Substitutionsfehler führen kann, wenn er im unmittelbaren Kontext einer Template-Instantiierung auftritt.

Customization Point Objects

Der Name std::partial_order bezeichnet ein Customization Point Object , welches ein konstantes Funktionsobjekt eines literalen semiregular Klassentyps ist. Weitere Details finden Sie unter CustomizationPointObject .

Beispiel

Siehe auch

Der Ergebnistyp des 3-Wege-Vergleichs, der alle 6 Operatoren unterstützt, nicht substituierbar ist und unvergleichbare Werte erlaubt
(Klasse)
Führt einen 3-Wege-Vergleich durch und erzeugt ein Ergebnis vom Typ std::strong_ordering
(Anpassungspunktobjekt)
(C++20)
Führt einen 3-Wege-Vergleich durch und erzeugt ein Ergebnis vom Typ std::weak_ordering
(Anpassungspunktobjekt)
Führt einen 3-Wege-Vergleich durch und erzeugt ein Ergebnis vom Typ std::partial_ordering , selbst wenn operator <=> nicht verfügbar ist
(Anpassungspunktobjekt)