Namespaces
Variants

std::weak_ordering

Von de.cppreference.net
 
 
Dienstprogrammbibliothek
Sprachunterstützung
Typunterstützung (grundlegende Typen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Dienstprogramme
Variadische Funktionen
Koroutinenunterstützung (C++20)
Vertragsunterstützung (C++26)
Dreiseitiger 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)
Allgemeine Vokabeltypen
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
Definiert in Header <compare>
class weak_ordering;
(seit C++20)

Der Klassentyp std::weak_ordering ist der Ergebnistyp eines Dreiseitigen Vergleichs, der:

  • Alle sechs relationalen Operatoren zulässt (==, !=, <, <=, >, >=).
  • Keine Substituierbarkeit impliziert: Wenn a äquivalent zu b ist, muss f(a) nicht äquivalent zu f(b) sein, wobei f eine Funktion bezeichnet, die nur den vergleichsrelevanten Zustand liest, der über die öffentlichen const-Member des Arguments zugänglich ist. Mit anderen Worten: Äquivalente Werte können unterscheidbar sein.
  • Keine nicht vergleichbaren Werte zulässt: Genau einer der Werte a < b, a == b oder a > b muss true sein.

Konstanten

Der Typ std::weak_ordering hat drei gültige Werte, implementiert als konstante statische Datenelemente seines Typs:

Name Definition
inline constexpr std :: weak_ordering less
[static]
ein gültiger Wert, der eine Kleiner-als-Beziehung (geordnet vor) anzeigt
(öffentliche statische Member-Konstante)
inline constexpr std :: weak_ordering equivalent
[static]
ein gültiger Wert, der Äquivalenz anzeigt (weder geordnet vor noch geordnet nach)
(öffentliche statische Member-Konstante)
inline constexpr std :: weak_ordering greater
[static]
ein gültiger Wert, der eine Größer-als-Beziehung (geordnet nach) anzeigt
(öffentliche statische Member-Konstante)

Konvertierungen

std::weak_ordering ist implizit konvertierbar zu std::partial_ordering , während std::strong_ordering implizit konvertierbar zu weak_ordering ist.

operator partial_ordering
implizite Konvertierung zu std::partial_ordering
(öffentliche Elementfunktion)

std::weak_ordering:: operator partial_ordering

constexpr operator partial_ordering ( ) const noexcept ;

Rückgabewert

std::partial_ordering::less falls v less ist, std::partial_ordering::greater falls v greater ist, std::partial_ordering::equivalent falls v equivalent ist.

Vergleiche

Vergleichsoperatoren sind zwischen Werten dieses Typs und dem Literal ​ 0 ​ definiert. Dies unterstützt die Ausdrücke a <=> b == 0 oder a <=> b < 0 , die verwendet werden können, um das Ergebnis eines Drei-Wege-Vergleichsoperators in eine boolesche Relation umzuwandeln; siehe std::is_eq , std::is_lt , etc.

Diese Funktionen sind für gewöhnliches unqualified oder qualified lookup nicht sichtbar und können nur durch argument-dependent lookup gefunden werden, wenn std::weak_ordering eine assoziierte Klasse der Argumente ist.

Das Verhalten eines Programms, das versucht, einen weak_ordering mit etwas anderem als dem ganzzahligen Literal ​ 0 ​ zu vergleichen, ist undefiniert.

operator== operator< operator> operator<= operator>= operator<=>
vergleicht mit Null oder einem weak_ordering
(Funktion)

operator==

friend constexpr bool operator == ( weak_ordering v, /*unspecified*/ u ) noexcept ;
(1)
friend constexpr bool operator == ( weak_ordering v, weak_ordering w ) noexcept = default ;
(2)

Parameter

v, w - std::weak_ordering Werte zu prüfen
u - ein unbenutzter Parameter beliebigen Typs, der das Literal Null akzeptiert

Rückgabewert

1) true wenn v equivalent ist, false wenn v less oder greater ist
2) true wenn beide Parameter denselben Wert enthalten, false andernfalls

operator<

friend constexpr bool operator < ( weak_ordering v, /*unspecified*/ u ) noexcept ;
(1)
friend constexpr bool operator < ( /*unspecified*/ u, weak_ordering v ) noexcept ;
(2)

Parameter

v - ein std::weak_ordering -Wert zur Überprüfung
u - ein unbenutzter Parameter beliebigen Typs, der das Literal Null als Argument akzeptiert

Rückgabewert

1) true wenn v less ist, und false wenn v greater oder equivalent ist
2) true wenn v greater ist, und false wenn v less oder equivalent ist

operator<=

friend constexpr bool operator <= ( weak_ordering v, /*unspecified*/ u ) noexcept ;
(1)
friend constexpr bool operator <= ( /*unspecified*/ u, weak_ordering v ) noexcept ;
(2)

Parameter

v - ein std::weak_ordering -Wert zur Überprüfung
u - ein unbenutzter Parameter beliebigen Typs, der das Literal Null als Argument akzeptiert

Rückgabewert

1) true wenn v less oder equivalent ist, und false wenn v greater ist
2) true wenn v greater oder equivalent ist, und false wenn v less ist

operator>

friend constexpr bool operator > ( weak_ordering v, /*unspecified*/ u ) noexcept ;
(1)
friend constexpr bool operator > ( /*unspecified*/ u, weak_ordering v ) noexcept ;
(2)

Parameter

v - ein std::weak_ordering -Wert zur Überprüfung
u - ein unbenutzter Parameter beliebigen Typs, der das Literal Null akzeptiert

Rückgabewert

1) true falls v greater ist, und false falls v less oder equivalent ist
2) true falls v less ist, und false falls v greater oder equivalent ist

operator>=

friend constexpr bool operator >= ( weak_ordering v, /*unspecified*/ u ) noexcept ;
(1)
friend constexpr bool operator >= ( /*unspecified*/ u, weak_ordering v ) noexcept ;
(2)

Parameter

v - ein std::weak_ordering -Wert zur Überprüfung
u - ein unbenutzter Parameter beliebigen Typs, der das Literal Null akzeptiert

Rückgabewert

1) true wenn v greater oder equivalent ist, und false wenn v less ist
2) true wenn v less oder equivalent ist, und false wenn v greater ist

operator<=>

friend constexpr weak_ordering operator <=> ( weak_ordering v, /*unspecified*/ u ) noexcept ;
(1)
friend constexpr weak_ordering operator <=> ( /*unspecified*/ u, weak_ordering v ) noexcept ;
(2)

Parameter

v - ein std::weak_ordering -Wert zur Überprüfung
u - ein unbenutzter Parameter beliebigen Typs, der das Literal Null akzeptiert

Rückgabewert

1) v .
2) greater falls v less ist, less falls v greater ist, andernfalls v .

Beispiel

Siehe auch

der Ergebnistyp des 3-Wege-Vergleichs, der alle 6 Operatoren unterstützt und substituierbar ist
(class)
der Ergebnistyp des 3-Wege-Vergleichs, der alle 6 Operatoren unterstützt, nicht substituierbar ist und unvergleichbare Werte erlaubt
(class)