std::weak_ordering
| definiert in Header <compare>
|
||
class weak_ordering; |
||
Die Klasse std::weak_ordering ist das Ergebnis eines 3-Wegevergleichs, der
- alle 6 Beziehungsoperatoren (==, !=, <, <=, >, >=) erlaubt.
- Ersetzbarkeit nicht verlangt: Fall a äquivalent zu b ist, so muß f(a) nicht äquivalent zu f(b) sein, wobei f eine Funktion beschreibt, die nur vergleichsrelevante Zustände liest, die über öffentliche Objektendaten der Argumente zugreifbar sind. Äquivalente Werte können unterscheidbar sein.
- keine unvergleichbaren Werte erlaubt, d.h. genau eine Aussage von a < b, a == b oder a > b muß wahr sein.
Inhaltsverzeichnis
Konstanten
Der Typ std::weak_ordering besitzt drei Gültigkeitswerte, die als statische, konstante Objektdaten implementiert sind:
| Objektkonstanten | Definition |
less(inline constexpr) [statisch] |
ein Gültigkeitswert vom Typ std::weak_ordering, der eine kleiner-als-Beziehung (davor einordnen) beschreibt (public static Mitglied konstanten) |
equivalent(inline constexpr) [statisch] |
ein Gültigkeitswert vom Typ std::weak_ordering, der eine Äquivalenzbeziehung (weder davor noch danach einordnen) beschreibt (public static Mitglied konstanten) |
greater(inline constexpr) [statisch] |
ein Gültigkeitswert vom Typ std::weak_ordering, der eine größer-als-Beziehung (danach einordnen) beschreibt (public static Mitglied konstanten) |
Konvertierungen
std::weak_ordering ist implizit konvertierbar nach std::partial_ordering, während std::strong_ordering implizit konvertierbar nach weak_ordering ist.
| implizit konvertierbar nach std::partial_ordering (öffentliche Elementfunktion) |
std::weak_ordering::operator partial_ordering
<tbody> </tbody> constexpr operator partial_ordering() const noexcept; |
||
Rückgabewerte
std::partial_ordering::less, falls v ist kleiner, std::partial_ordering::greater, falls v is größer, oder
std::partial_ordering::equivalent, falls v is äquivalent.
Vergleiche
Vergleichsoperatoren sind definiert zwischen Werten dieses Typs und der generischen 0.
Dieses unterstützt Ausdrücke der Form a <=> b == 0 oder a <=> b < 0, welche benutzt werden können, um das Ergebnis des 3-Wegevergleichs in eine boolschen Beziehung zu bringen (hierzu auch std::is_eq, std::is_lt etc).
Diese Funktionen sind nicht sichtbar bei der normalen nicht qualifizierten oder qualifizierten Suche und {{#ifeq:YES|YES|können|kann} nur durch argumentenabhängige Suche gefunden werden, falls std::weak_ordering ein Klasse der Argumente ist.
Das Verhalten eines Programms, welches versucht {tt|weak_ordering}} mit etwas anderes als einer generischen 0 zu vergleichen, ist undefiniert.
vergleicht mit Null oder weak_ordering (Funktion) |
operator==
<tbody> </tbody> 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 | - | ein Wert vom Typ std::weak_ordering zum Vergleich
|
| u | - | ein unbenutzter Parameter eines beliebigen Typs, der eine generische Null als Argument akzeptiert |
Rückgabewert
true, falls v äquivalent ist, und false, falls v kleiner oder größer ist.true, falls beide Parameter den selben Wert haben, ansonsten false
operator<
<tbody> </tbody> friend constexpr bool operator<(weak_ordering v, /*unspecified*/ u) noexcept; |
(1) | |
friend constexpr bool operator<(/*unspecified*/ u, weak_ordering v) noexcept; |
(2) | |
Parameter
| v, w | - | ein Wert vom Typ std::weak_ordering zum Vergleich
|
| u | - | ein unbenutzter Parameter eines beliebigen Typs, der eine generische Null als Argument akzeptiert |
Rückgabewert
true, falls v kleiner ist, und false, falls v äquivalent oder größer ist.true, falls v größer ist, und false, falls v äquivalent oder kleiner ist.
operator<=
<tbody> </tbody> friend constexpr bool operator<=(weak_ordering v, /*unspecified*/ u) noexcept; |
(1) | |
friend constexpr bool operator<=(/*unspecified*/ u, weak_ordering v) noexcept; |
(2) | |
Parameter
| v, w | - | ein Wert vom Typ std::weak_ordering zum Vergleich
|
| u | - | ein unbenutzter Parameter eines beliebigen Typs, der eine generische Null als Argument akzeptiert |
Rückgabewert
true, falls v kleiner oder äquivalent ist, und false, falls v größer ist.true, falls v größer oder äquivalent ist, und false, falls v kleiner ist.
operator>
<tbody> </tbody> friend constexpr bool operator>(weak_ordering v, /*unspecified*/ u) noexcept; |
(1) | |
friend constexpr bool operator>(/*unspecified*/ u, weak_ordering v) noexcept; |
(2) | |
Parameter
| v, w | - | ein Wert vom Typ std::weak_ordering zum Vergleich
|
| u | - | ein unbenutzter Parameter eines beliebigen Typs, der eine generische Null als Argument akzeptiert |
Rückgabewert
true, falls v größerr ist, und false, falls v äquivalent oder kleiner ist.true, falls v kleiner ist, und false, falls v äquivalent oder größer ist.
operator>=
<tbody> </tbody> friend constexpr bool operator>=(weak_ordering v, /*unspecified*/ u) noexcept; |
(1) | |
friend constexpr bool operator>=(/*unspecified*/ u, weak_ordering v) noexcept; |
(2) | |
Parameter
| v, w | - | ein Wert vom Typ std::weak_ordering zum Vergleich
|
| u | - | ein unbenutzter Parameter eines beliebigen Typs, der eine generische Null als Argument akzeptiert |
Rückgabewert
true, falls v größer oder äquivalent ist, und false, falls v kleiner ist.true, falls v kleiner oder äquivalent ist, und false, falls v größer ist.
operator<=>
<tbody> </tbody> 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, w | - | ein Wert vom Typ std::weak_ordering zum Vergleich
|
| u | - | ein unbenutzter Parameter eines beliebigen Typs, der eine generische Null als Argument akzeptiert |
Rückgabewert
v.greater, falls v less ist, less, falls v greater ist, ansonsten v.
Example
| This section is incomplete Reason: no example |
Referenzen
(C++20) |
das Ergebnis des 3-Wegevergleichs, der alle 6 Operatoren unterstützt und ersetzbar ist (Klasse) |
(C++20) |
der Ergebnistyp des 3-Wegevergleichs, der alle 6 Operatoren unterstützt, nicht ersetzbar ist und nichtvergleichbare Werte erlaubt (Klasse) |