std::partial_ordering
| definiert in Header <compare>
|
||
class partial_ordering; |
||
Die Klasse std::partial_ordering ist der Ergebnistyp eines 3-Wegevergleichsoperators, 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. und
- erlaubt, daß für nichtvergleichbare Werte alle Vergleiche (a < b, a == b und a > b) falsch liefert.
Konstanten
Der Typ std::partial_ordering besitzt vier Gültigkeitswerte, die als statische, konstante Objektdaten implementiert sind:
| Objektkonstanten | Definition |
less(inline constexpr) [statisch] |
ein Gültigkeitswert vom Typ std::partial_ordering, der eine kleiner-als-Beziehung (davor einordnen) beschreibt (public static Mitglied konstanten) |
equivalent(inline constexpr) [statisch] |
ein Gültigkeitswert vom Typ std::partial_ordering, der eine Äquivalenzbeziehung (weder davor noch danach einordnen) beschreibt (public static Mitglied konstanten) |
greater(inline constexpr) [statisch] |
ein Gültigkeitswert vom Typ std::partial_ordering, der eine größer-als-Beziehung (danach einordnen) beschreibt (public static Mitglied konstanten) |
unordered(inline constexpr) [statisch] |
ein Gültigkeitswert vom Typ std::partial_ordering, der eine Beziehung der Nichtvergleichbarkeit beschreibt (public static Mitglied konstanten) |
Konvertierungen
std::partial_ordering kann nicht implizit zu anderen Vergleichskategorien konvertiert werden, während sowohl std::strong_ordering als auch std::weak_ordering implizit nach partial_ordering konvertierbar sind.
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::partial_ordering ein Klasse der Argumente ist.
Das Verhalten eines Programms, welches versucht {tt|partial_ordering}} mit etwas anderes als einer generischen 0 zu vergleichen, ist undefiniert.
vergleicht mit Null oder partial_ordering (Funktion) | |
operator==
<tbody> </tbody> friend constexpr bool operator==(partial_ordering v, /*unspecified*/ u) noexcept; |
(1) | |
friend constexpr bool operator==(partial_ordering v, partial_ordering w) noexcept = default; |
(2) | |
Parameter
| v, w | - | ein Wert vom Typ std::partial_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, größer oder ungeordnet ist.true, falls beide Parameter den selben Wert haben, ansonsten false
operator<
<tbody> </tbody> friend constexpr bool operator<(partial_ordering v, /*unspecified*/ u) noexcept; |
(1) | |
friend constexpr bool operator<(/*unspecified*/ u, partial_ordering v) noexcept; |
(2) | |
Parameter
| v, w | - | ein Wert vom Typ std::partial_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, größer oder ungeordnet ist.true, falls v größer ist, und false, falls v äquivalent, kleiner oder ungeordnet ist.
operator<=
<tbody> </tbody> friend constexpr bool operator<=(partial_ordering v, /*unspecified*/ u) noexcept; |
(1) | |
friend constexpr bool operator<=(/*unspecified*/ u, partial_ordering v) noexcept; |
(2) | |
Parameter
| v, w | - | ein Wert vom Typ std::partial_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 oder ungeordnet ist.true, falls v größer oder äquivalent ist, und false, falls v kleiner oder ungeordnet ist.
operator>
<tbody> </tbody> friend constexpr bool operator>(partial_ordering v, /*unspecified*/ u) noexcept; |
(1) | |
friend constexpr bool operator>(/*unspecified*/ u, partial_ordering v) noexcept; |
(2) | |
Parameter
| v, w | - | ein Wert vom Typ std::partial_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, kleiner oder ungeordnet ist.true, falls v kleiner ist, und false, falls v äquivalent, größer oder ungeordnet ist.
operator>=
<tbody> </tbody> friend constexpr bool operator>=(partial_ordering v, /*unspecified*/ u) noexcept; |
(1) | |
friend constexpr bool operator>=(/*unspecified*/ u, partial_ordering v) noexcept; |
(2) | |
Parameter
| v, w | - | ein Wert vom Typ std::partial_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 oder ungeordnet ist.true, falls v kleiner oder äquivalent ist, und false, falls v größer oder ungeordnet ist.
operator<=>
<tbody> </tbody> friend constexpr partial_ordering operator<=>(partial_ordering v, /*unspecified*/ u) noexcept; |
(1) | |
friend constexpr partial_ordering operator<=>(/*unspecified*/ u, partial_ordering v) noexcept; |
(2) | |
Parameter
| v, w | - | ein Wert vom Typ std::partial_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.
Anmerkungen
Der eingebaute operator<=> zwischen Fließkommazahlen benutzt die folgende Ordnung:
- Die positive und die negative Null sind
äquivalent, sind aber unterscheidbar. - Alle von NaN sind
ungeordnetmit allen anderen Werten.
Beispiel
| 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) |
das Ergebnis eines 3-Wegevergleichs, der alle 6 Operatoren unterstützt und nicht ersetzbar ist (Klasse) |