Namespaces
Variants

std::compare_strong_order_fallback

Von de.cppreference.net
 
 
Dienstprogrammbibliothek
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Dienstprogramme
Variadische Funktionen
Coroutinen-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
Relationale Operatoren (veraltet in C++20)
Integer-Vergleichsfunktionen
(C++20)(C++20)(C++20)    
(C++20)
Swap und Typoperationen
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Gebräuchliche Vokabular-Typen
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



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

Führt einen Drei-Wege-Vergleich für Teilausdrücke t und u durch und erzeugt ein Ergebnis vom Typ std::strong_ordering, selbst wenn der Operator <=> nicht verfügbar ist.

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

  • std::strong_order(t, u), wenn es sich um einen wohldefinierten Ausdruck handelt;
  • andernfalls, t == u ? std::strong_ordering::equal :
    t < u ? std::strong_ordering::less :
             std::strong_ordering::greater
wenn die Ausdrücke t == u und t < u beide wohldefiniert sind und jeder von decltype(t == u) und decltype(t < u) das Konzept boolean-testable modelliert, außer dass t und u nur einmal ausgewertet werden.

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

Customization Point Objects

Der Name std::compare_strong_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 verlangte nur,
dass Rückgabetypen zu bool konvertierbar sind
Einschränkungen verstärkt

Siehe auch

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