std:: partial_ordering
|
Definiert im Header
<compare>
|
||
|
class
partial_ordering
;
|
(seit C++20) | |
Der Klassentyp
std::partial_ordering
ist der Ergebnistyp eines
Drei-Wege-Vergleichs
, der:
-
Akzeptiert alle sechs relationalen Operatoren (
==,!=,<,<=,>,>=).
- Impliziert keine Substituierbarkeit: Wenn a äquivalent zu b ist, kann f ( a ) nicht ä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. Mit anderen Worten können äquivalente Werte unterscheidbar sein.
- Lässt unvergleichbare Werte zu : a < b , a == b und a > b können alle false sein.
Inhaltsverzeichnis |
Konstanten
Der Typ
std::partial_ordering
hat vier gültige Werte, implementiert als konstante statische Datenelemente seines Typs:
| Name | Definition |
|
inline
constexpr
std
::
partial_ordering
less
[static]
|
ein gültiger Wert, der eine Kleiner-als-Beziehung (geordnet vor) anzeigt
(öffentliche statische Elementkonstante) |
|
inline
constexpr
std
::
partial_ordering
equivalent
[static]
|
ein gültiger Wert, der Äquivalenz anzeigt (weder geordnet vor noch geordnet nach)
(öffentliche statische Elementkonstante) |
|
inline
constexpr
std
::
partial_ordering
greater
[static]
|
ein gültiger Wert, der eine Größer-als-Beziehung (geordnet nach) anzeigt
(öffentliche statische Elementkonstante) |
|
inline
constexpr
std
::
partial_ordering
unordered
[static]
|
ein gültiger Wert, der eine Beziehung mit einem unvergleichbaren Wert anzeigt
(öffentliche statische Elementkonstante) |
Konvertierungen
std::partial_ordering
kann nicht implizit in andere Vergleichskategorien-Typen konvertiert werden, während sowohl
std::strong_ordering
als auch
std::weak_ordering
implizit in
partial_ordering
konvertierbar sind.
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::partial_ordering
eine assoziierte Klasse der Argumente ist.
Das Verhalten eines Programms, das versucht, einen
partial_ordering
mit etwas anderem als dem ganzzahligen Literal
0
zu vergleichen, ist undefiniert.
|
operator==
operator<
operator>
operator<=
operator>=
operator<=>
|
vergleicht mit Null oder einem
partial_ordering
(Funktion) |
operator==
|
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 | - |
std::partial_ordering
Werte zur Überprüfung
|
| u | - | ein unbenutzter Parameter beliebigen Typs, der das Literal Null akzeptiert |
Rückgabewert
v
equivalent
ist,
false
wenn
v
less
,
greater
, oder
unordered
ist
operator<
|
friend
constexpr
bool
operator
<
(
partial_ordering v,
/*unspecified*/
u
)
noexcept
;
|
(1) | |
|
friend
constexpr
bool
operator
<
(
/*unspecified*/
u, partial_ordering v
)
noexcept
;
|
(2) | |
Parameter
| v | - |
ein
std::partial_ordering
-Wert zur Überprüfung
|
| u | - | ein unbenutzter Parameter beliebigen Typs, der das Literal Null akzeptiert |
Rückgabewert
v
less
ist, und
false
wenn
v
greater
,
equivalent
oder
unordered
ist
v
greater
ist, und
false
wenn
v
less
,
equivalent
oder
unordered
ist
operator<=
|
friend
constexpr
bool
operator
<=
(
partial_ordering v,
/*unspecified*/
u
)
noexcept
;
|
(1) | |
|
friend
constexpr
bool
operator
<=
(
/*unspecified*/
u, partial_ordering v
)
noexcept
;
|
(2) | |
Parameter
| v | - |
ein
std::partial_ordering
-Wert zur Überprüfung
|
| u | - | ein unbenutzter Parameter beliebigen Typs, der das Literal Null akzeptiert |
Rückgabewert
v
less
oder
equivalent
ist, und
false
wenn
v
greater
oder
unordered
ist
v
greater
oder
equivalent
ist, und
false
wenn
v
less
oder
unordered
ist
operator>
|
friend
constexpr
bool
operator
>
(
partial_ordering v,
/*unspecified*/
u
)
noexcept
;
|
(1) | |
|
friend
constexpr
bool
operator
>
(
/*unspecified*/
u, partial_ordering v
)
noexcept
;
|
(2) | |
Parameter
| v | - |
ein
std::partial_ordering
-Wert zur Überprüfung
|
| u | - | ein ungenutzter Parameter beliebigen Typs, der das Literal Null akzeptiert |
Rückgabewert
v
greater
ist, und
false
wenn
v
less
,
equivalent
oder
unordered
ist
v
less
ist, und
false
wenn
v
greater
,
equivalent
oder
unordered
ist
operator>=
|
friend
constexpr
bool
operator
>=
(
partial_ordering v,
/*unspecified*/
u
)
noexcept
;
|
(1) | |
|
friend
constexpr
bool
operator
>=
(
/*unspecified*/
u, partial_ordering v
)
noexcept
;
|
(2) | |
Parameter
| v | - |
ein
std::partial_ordering
-Wert zur Überprüfung
|
| u | - | ein unbenutzter Parameter beliebigen Typs, der das Literal Null akzeptiert |
Rückgabewert
v
greater
oder
equivalent
ist, und
false
wenn
v
less
oder
unordered
ist
v
less
oder
equivalent
ist, und
false
wenn
v
greater
oder
unordered
ist
operator<=>
|
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 | - |
ein
std::partial_ordering
-Wert zur Überprüfung
|
| u | - | ein unbenutzter Parameter beliebigen Typs, der das Literal Null akzeptiert |
Rückgabewert
greater
falls
v
less
ist,
less
falls
v
greater
ist, andernfalls
v
.
Hinweise
Der
eingebaute
operator<=>
zwischen Gleitkommawerten verwendet diese Ordnung: die positive Null und die negative Null vergleichen sich als
equivalent
, können jedoch unterschieden werden, und NaN-Werte vergleichen sich als
unordered
mit jedem anderen Wert.
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
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 und nicht substituierbar ist
(Klasse) |