Namespaces
Variants

C++ named requirements: EqualityComparable

From cppreference.net
C++ named requirements

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:
  • Für alle Werte von a ergibt a == a den Wert true .
  • Wenn a == b , dann gilt b == a .
  • Wenn a == b und b == c , dann gilt a == c .
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)