std::weak_ordering
| Definiert in der Header-Datei <compare> |
||
| class weak_ordering; |
(seit C++20) | |
Der Klassentyp std::weak_ordering ist der Ergebnistyp eines Drei-Wege-Vergleichs, der
- alle sechs relationalen Operatoren (
==,!=,<,<=,>,>=) zulässt.
- Keine Substituierbarkeit impliziert: Wenn a äquivalent zu b ist, muss f(a) nicht unbedingt äquivalent zu f(b) sein, wobei f eine Funktion bezeichnet, die nur vergleichsrelevante Zustände liest, die über die öffentlichen const-Member des Arguments zugänglich sind. Anders ausgedrückt, äquivalente Werte können unterscheidbar sein.
- Ermöglicht keine unvergleichbaren Werte: Genau eines der folgenden muss true sein: a < b, a == b oder a > b.
Inhalt |
[bearbeiten] Konstanten
Der Typ std::weak_ordering hat drei gültige Werte, die als const static Datenmember seines Typs implementiert sind
| Name | Definition |
| inline constexpr std::weak_ordering less [static] |
ein gültiger Wert, der eine Kleiner-als-Beziehung (geordnet davor) angibt (ö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 danach) angibt (öffentliche statische Member-Konstante) |
[bearbeiten] Konvertierungen
std::weak_ordering ist implizit in std::partial_ordering konvertierbar, während std::strong_ordering implizit in weak_ordering konvertierbar ist.
| operator partial_ordering |
implizite Konvertierung zu std::partial_ordering (öffentliche Memberfunktion) |
std::weak_ordering::operator partial_ordering
| constexpr operator partial_ordering() const noexcept; |
||
Rückgabewert
std::partial_ordering::less wenn v less ist, std::partial_ordering::greater wenn v greater ist, std::partial_ordering::equivalent wenn v equivalent ist.
[bearbeiten] 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 Beziehung umzuwandeln; siehe std::is_eq, std::is_lt usw.
Diese Funktionen sind für gewöhnliche unqualifizierte oder qualifizierte Suche nicht sichtbar und können nur durch argumentabhängige Suche gefunden werden, wenn std::weak_ordering eine zugeordnete Klasse der Argumente ist.
Das Verhalten eines Programms, das versucht, eine weak_ordering mit etwas anderem als dem Ganzzahl-Literal 0 zu vergleichen, ist undefiniert.
| operator==operator<operator>operator<=operator>=operator<=> |
vergleicht mit Null oder einer 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 zum Prüfen |
| u | - | ein unbenutzter Parameter beliebigen Typs, der ein Literal-Null-Argument akzeptiert |
Rückgabewert
v equivalent ist, false wenn v less oder greater istoperator<
| 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 zum Prüfen |
| u | - | ein unbenutzter Parameter beliebigen Typs, der ein Literal-Null-Argument akzeptiert |
Rückgabewert
v less ist, und false wenn v greater oder equivalent istv greater ist, und false wenn v less oder equivalent istoperator<=
| 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 zum Prüfen |
| u | - | ein unbenutzter Parameter beliebigen Typs, der ein Literal-Null-Argument akzeptiert |
Rückgabewert
v less oder equivalent ist, und false wenn v greater istv greater oder equivalent ist, und false wenn v less istoperator>
| 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 zum Prüfen |
| u | - | ein unbenutzter Parameter beliebigen Typs, der ein Literal-Null-Argument akzeptiert |
Rückgabewert
v greater ist, und false wenn v less oder equivalent istv less ist, und false wenn v greater oder equivalent istoperator>=
| 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 zum Prüfen |
| u | - | ein unbenutzter Parameter beliebigen Typs, der ein Literal-Null-Argument akzeptiert |
Rückgabewert
v greater oder equivalent ist, und false wenn v less istv less oder equivalent ist, und false wenn v greater istoperator<=>
| 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 zum Prüfen |
| u | - | ein unbenutzter Parameter beliebigen Typs, der ein Literal-Null-Argument akzeptiert |
Rückgabewert
greater, wenn v less ist, less, wenn v greater ist, andernfalls v.[bearbeiten] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Siehe auch
| (C++20) |
der Ergebnistyp des 3-Wege-Vergleichs, der alle 6 Operatoren unterstützt und substituierbar ist (Klasse) |
| (C++20) |
der Ergebnistyp des 3-Wege-Vergleichs, der alle 6 Operatoren unterstützt, nicht substituierbar ist und unvergleichbare Werte zulässt (Klasse) |