Namespaces
Variants

std:: compare_partial_order_fallback

From cppreference.net
Utilities library
Definiert im 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 der Teilausdrücke t und u durch und erzeugt ein Ergebnis vom Typ std::partial_ordering , selbst wenn der Operator <=> nicht verfügbar ist.

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

  • std:: partial_order ( t, u ) , falls es sich um einen wohlgeformten Ausdruck handelt;
  • andernfalls, t == u ? std :: partial_ordering :: equivalent :
    t < u ? std :: partial_ordering :: less :
    u < t ? std :: partial_ordering :: greater :
    std :: partial_ordering :: unordered
    , falls die Ausdrücke t == u , t < u und u < t alle wohlgeformt sind und jeder von decltype ( t == u ) , decltype ( t < u ) und decltype ( u < t ) das Konzept boolean-testable modelliert, mit der Ausnahme, dass t und u nur einmal ausgewertet werden.

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

Inhaltsverzeichnis

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)