std:: weak_order
|
Definiert im Header
<compare>
|
||
|
inline
namespace
/* unspecified */
{
inline
constexpr
/* unspecified */
weak_order
=
/* unspecified */
;
|
(seit C++20) | |
|
Aufrufsignatur
|
||
|
template
<
class
T,
class
U
>
requires
/* see below */
|
||
Vergleicht zwei Werte mittels 3-Wege-Vergleich und erzeugt ein Ergebnis vom Typ
std::weak_ordering
.
Seien
t
und
u
Ausdrücke und bezeichnen
T
und
U
jeweils
decltype
(
(
t
)
)
und
decltype
(
(
u
)
)
,
std
::
weak_order
(
t, u
)
ist
ausdrucksäquivalent
zu:
-
Wenn
std::
is_same_v
<
std::
decay_t
<
T
>
,
std::
decay_t
<
U
>>
trueist:-
std::
weak_ordering
(
weak_order
(
t, u
)
)
, falls es ein wohlgeformter Ausdruck ist, wobei die Überladungsauflösung in einem Kontext durchgeführt wird, der keine Deklaration von
std::weak_orderenthält, -
andernfalls, wenn
Tein Gleitkommatyp ist:-
wenn
std::
numeric_limits
<
T
>
::
is_iec559
trueist, führt den Weak-Ordering-Vergleich von Gleitkommawerten durch (siehe unten) und gibt das Ergebnis als Wert vom Typstd::weak_orderingzurück, -
andernfalls liefert einen Wert vom Typ
std::weak_ordering, der mit der durchTs Vergleichsoperatoren beobachteten Ordnung konsistent ist,
-
wenn
std::
numeric_limits
<
T
>
::
is_iec559
- andernfalls, std:: weak_ordering ( std:: compare_three_way ( ) ( t, u ) ) , falls es wohlgeformt ist,
- andernfalls, std:: weak_ordering ( std:: strong_order ( t, u ) ) , falls es wohlgeformt ist.
-
std::
weak_ordering
(
weak_order
(
t, u
)
)
, falls es ein wohlgeformter Ausdruck ist, wobei die Überladungsauflösung in einem Kontext durchgeführt wird, der keine Deklaration von
- In allen anderen Fällen ist der Ausdruck fehlerhaft, was zu Substitutionsfehlern führen kann, wenn er im unmittelbaren Kontext einer Template-Instanziierung erscheint.
Inhaltsverzeichnis |
Customization Point Objects
Der Name
std::weak_order
bezeichnet ein
Customization Point Object
, welches ein konstantes
Funktionsobjekt
eines
Literal
semiregular
Klassentyps ist. Weitere Details finden Sie unter
CustomizationPointObject
.
Strikte schwache Ordnung von IEEE-Gleitkommatypen
Seien x und y Werte desselben IEEE-Gleitkommatyps, und weak_order_less ( x, y ) sei das boolesche Ergebnis, das angibt, ob x in der strengen schwachen Ordnung, die durch den C++-Standard definiert ist, vor y kommt.
- Wenn weder x noch y NaN ist, dann ist weak_order_less ( x, y ) == true genau dann, wenn x < y , d.h. alle Darstellungen gleicher Fließkommawerte sind äquivalent;
- Wenn x negatives NaN ist und y nicht negatives NaN ist, dann ist weak_order_less ( x, y ) == true ;
- Wenn x nicht positives NaN ist und y positives NaN ist, dann ist weak_order_less ( x, y ) == true ;
- Wenn sowohl x als auch y NaNs mit demselben Vorzeichen sind, dann ist ( weak_order_less ( x, y ) || weak_order_less ( y, x ) ) == false , d.h. alle NaNs mit demselben Vorzeichen sind äquivalent.
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 nicht substituierbar ist
(Klasse) |
|
(C++20)
|
führt einen 3-Wege-Vergleich durch und erzeugt ein Ergebnis vom Typ
std::strong_ordering
(Anpassungspunktobjekt) |
|
(C++20)
|
führt einen 3-Wege-Vergleich durch und erzeugt ein Ergebnis vom Typ
std::partial_ordering
(Anpassungspunktobjekt) |
|
(C++20)
|
führt einen 3-Wege-Vergleich durch und erzeugt ein Ergebnis vom Typ
std::weak_ordering
, selbst wenn
operator
<=>
nicht verfügbar ist
(Anpassungspunktobjekt) |