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.
Inhaltsverzeichnis |
[Bearbeiten] 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) |
[Bearbeiten] 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.
[Bearbeiten] 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.
operator== operator< operator> operator<= operator>= operator<=> | vergleicht mit Null oder partial_ordering (Funktion) |
operator==
friendconstexprbool operator==(partial_ordering v, /*unspecified*/ u)noexcept; | (1) | |
friendconstexprbool 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
v
äquivalent
ist, und false, falls v
kleiner
, größer
oder ungeordnet
ist.operator<
friendconstexprbool operator<(partial_ordering v, /*unspecified*/ u)noexcept; | (1) | |
friendconstexprbool 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
kleiner
ist, und false, falls v
äquivalent
, größer
oder ungeordnet
ist.v
größer
ist, und false, falls v
äquivalent
, kleiner
oder ungeordnet
ist. operator<=
friendconstexprbool operator<=(partial_ordering v, /*unspecified*/ u)noexcept; | (1) | |
friendconstexprbool 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
kleiner
oder äquivalent
ist, und false, falls v
größer
oder ungeordnet
ist.v
größer
oder äquivalent
ist, und false, falls v
kleiner
oder ungeordnet
ist. operator>
friendconstexprbool operator>(partial_ordering v, /*unspecified*/ u)noexcept; | (1) | |
friendconstexprbool 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
größerr
ist, und false, falls v
äquivalent
, kleiner
oder ungeordnet
ist.v
kleiner
ist, und false, falls v
äquivalent
, größer
oder ungeordnet
ist. operator>=
friendconstexprbool operator>=(partial_ordering v, /*unspecified*/ u)noexcept; | (1) | |
friendconstexprbool 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
größer
oder äquivalent
ist, und false, falls v
kleiner
oder ungeordnet
ist.v
kleiner
oder äquivalent
ist, und false, falls v
größer
oder ungeordnet
ist. operator<=>
friendconstexpr partial_ordering operator<=>(partial_ordering v, /*unspecified*/ u)noexcept; | (1) | |
friendconstexpr 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
greater
, falls v
less
ist, less
, falls v
greater
ist, ansonsten v
. [Bearbeiten] 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
ungeordnet
mit allen anderen Werten.
[Bearbeiten] Beispiel
This section is incomplete Reason: no example |
[Bearbeiten] 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) |