C++ named requirements: EqualityComparable
Der Typ muss mit dem
==
Operator funktionieren und das Ergebnis sollte Standard-Semantik haben.
Inhaltsverzeichnis |
Anforderungen
Der Typ
T
erfüllt die Anforderungen von
EqualityComparable
, wenn für die Ausdrücke
a
,
b
und
c
vom Typ
T
oder
(seit C++11)
const
T
der folgende Ausdruck gültig ist und die spezifizierten Effekte hat:
| Expression | Type | Auswirkungen |
|---|---|---|
| a == b |
erfüllt
BooleanTestable
(bis C++20) |
Stellt eine
Äquivalenzrelation
her, d.h. sie erfüllt folgende Eigenschaften:
|
modelliert
boolean-testable
(seit C++20) |
Hinweise
Um diese Anforderung zu erfüllen, müssen Typen, die keine eingebauten Vergleichsoperatoren besitzen, einen benutzerdefinierten operator == bereitstellen.
Für Typen, die sowohl EqualityComparable als auch LessThanComparable sind, macht die C++-Standardbibliothek eine Unterscheidung zwischen
- Gleichheit , was der Wert des Ausdrucks a == b ist, und
- Äquivalenz , was der Wert des Ausdrucks ! ( a < b ) && ! ( b < a ) ist.
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 283 | C++98 |
selbst wenn
T
EqualityComparable
ist, galten die
Anforderungen nicht für const T Objekte |
sie gelten für
const T anstelle von
T
|
|
LWG 2114
( P2167R3 ) |
C++98 | Konvertierbarkeit zu bool war zu schwach, um die Erwartungen der Implementierungen widerzuspiegeln | Anforderungen verstärkt |
Siehe auch
|
spezifiziert, dass der Operator
==
eine Äquivalenzrelation ist
(Konzept) |