Namespaces
Variants

std::compare_partial_order_fallback

Von de.cppreference.net
 
 
Dienstprogrammbibliothek
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Dienstprogramme
Variadische Funktionen
Koroutinen-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Drei-Wege-Vergleich
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

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

Führt einen Drei-Wege-Vergleich auf den Teilausdrücken t und u durch und erzeugt ein Ergebnis vom Typ std::partial_ordering, auch wenn der Operator <=> nicht verfügbar ist.

Wenn std::decay_t<T> und std::decay_t<U>> der gleiche Typ sind, ist std::compare_partial_order_fallback(t, u) ausdrucksäquivalent zu:

  • std::partial_order(t, u), wenn dies ein wohldefinierter Ausdruck ist;
  • andernfalls t == u ? std::partial_ordering::equivalent :
    t < u ? std::partial_ordering::less :
    u < t ? std::partial_ordering::greater :
             std::partial_ordering::unordered
    , wenn die Ausdrücke t == u, t < u und u < t alle wohldefiniert sind und jeder von decltype(t == u), decltype(t < u) und decltype(u < t) das Konzept boolean-testable modelliert, außer dass t und u nur einmal ausgewertet werden.

In allen anderen Fällen ist std::compare_partial_order_fallback(t, u) nicht wohldefiniert, was zu Substitutionsfehlern führen kann, wenn es im unmittelbaren Kontext einer Template-Instantiierung auftritt.

Customization Point Objects

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

Beispiel

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 2114
( P2167R3 )
C++20 der Fallback-Mechanismus forderte nur,
dass Rückgabetypen zu bool konvertierbar sind
Einschränkungen verstärkt
LWG 3465 C++20 der Fallback-Mechanismus forderte nicht,
dass u < t wohlgeformt ist
erforderlich gemacht
LWG 4157 C++20 P2167R3 überschrieb die Lösung von LWG issue 3465 Lösung wiederhergestellt

Siehe auch

führt einen 3-Wege-Vergleich durch und erzeugt ein Ergebnis vom Typ std::partial_ordering
(Anpassungspunktobjekt)