operator==, <=> (std::reference_wrapper)
Von cppreference.com
< cpp | utility | functional | reference wrapper
| friend constexpr bool operator==( reference_wrapper lhs, reference_wrapper rhs ); |
(1) | (seit C++26) |
| friend constexpr bool operator==( reference_wrapper lhs, reference_wrapper<const T> rhs ); |
(2) | (seit C++26) |
| friend constexpr bool operator==( reference_wrapper lhs, const T& ref ); |
(3) | (seit C++26) |
| friend constexpr auto operator<=> ( reference_wrapper lhs, reference_wrapper rhs ); |
(4) | (seit C++26) |
| friend constexpr auto operator<=> ( reference_wrapper lhs, reference_wrapper<const T> rhs ); |
(5) | (seit C++26) |
| friend constexpr auto operator<=> ( reference_wrapper lhs, const T& ref ); |
(6) | (seit C++26) |
Führt Vergleichsoperationen für reference_wrapper Objekte durch.
1,2) Vergleicht zwei
reference_wrapper Objekte. Die Objekte sind genau dann gleich, wenn lhs.get() und rhs.get() gleich sind.1) Diese Überladung nimmt an der Überladungsauflösung teil, nur wenn der Ausdruck lhs.get() == rhs.get() wohlgeformt ist und sein Ergebnis in bool konvertierbar ist.
2) Diese Überladung nimmt an der Überladungsauflösung teil, nur wenn alle folgenden Bedingungen erfüllt sind:
- std::is_const_v<T> ist false.
- Der Ausdruck lhs.get() == rhs.get() ist wohlgeformt und sein Ergebnis ist in bool konvertierbar.
3) Vergleicht ein
reference_wrapper Objekt mit einer Referenz. Die Parameter sind genau dann gleich, wenn lhs.get() gleich ref ist. Diese Überladung nimmt an der Überladungsauflösung teil, nur wenn der Ausdruck lhs.get() == ref wohlgeformt ist und sein Ergebnis in bool konvertierbar ist.
4) Diese Überladung nimmt an der Überladungsauflösung teil, nur wenn der Ausdruck synth-three-way(lhs.get(), rhs.get()) wohlgeformt ist.
5) Diese Überladung nimmt an der Überladungsauflösung teil, nur wenn alle folgenden Bedingungen erfüllt sind:
- std::is_const_v<T> ist false.
- Der Ausdruck synth-three-way(lhs.get(), rhs.get()) ist wohlgeformt.
Diese Überladung nimmt an der Überladungsauflösung teil, nur wenn der Ausdruck synth-three-way(lhs.get(), ref) wohlgeformt ist.
Die Operatoren <, <=, >, >= und != sind synthetisiert aus operator<=> und operator== beziehungsweise.
Inhalt |
[edit] Parameter
| lhs, rhs | - | reference_wrapper Objekt, das verglichen werden soll |
| ref | - | Referenz, die mit dem reference_wrapper Objekt verglichen werden soll |
[edit] Rückgabewert
1,2) lhs.get() == rhs.get().
3) lhs.get() == ref.
4,5) synth-three-way(lhs.get(), rhs.get()).
6) synth-three-way(lhs.get(), ref).
[edit] Ausnahmen
Wirft, wenn und was der Vergleich wirft.
[edit] Hinweise
Die Rückgabetypen von operator<=> werden aus den return-Anweisungen abgeleitet, um harte Fehler bei der Instanziierung eines std::reference_wrapper<T> zu vermeiden, wenn synth-three-way-result<T> nicht wohlgeformt ist.
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_reference_wrapper |
202403L |
(C++26) | Vergleiche für std::reference_wrapper |
[edit] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |