Namespaces
Variants

std:: compare_strong_order_fallback

From cppreference.net
Utilities library
Definiert im 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 der 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 > denselben Typ besitzen, ist std :: compare_strong_order_fallback ( t, u ) ausdrucksäquivalent zu:

  • std:: strong_order ( t, u ) , falls es ein wohlgeformter Ausdruck ist;
  • 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 wohlgeformt sind und jeder von decltype ( t == u ) und decltype ( t < u ) das Konzept boolean-testable modelliert, mit der Ausnahme, dass t und u nur einmal ausgewertet werden.

In allen anderen Fällen ist std :: compare_strong_order_fallback ( t, u ) ill-formed, was zu Substitutionsfehlern führen kann, wenn es im unmittelbaren Kontext einer Template-Instanziierung erscheint.

Inhaltsverzeichnis

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)