Namensräume
Varianten
Aktionen

C++ benannte Anforderungen: EqualityComparable

Von cppreference.com
 
 
C++ benannte Anforderungen
 

Der Typ muss mit dem == Operator funktionieren und das Ergebnis muss eine Standardsemantik haben.

Inhalt

[bearbeiten] Anforderungen

Der Typ T erfüllt EqualityComparable, wenn für gegebene Ausdrücke a, b und c vom Typ T oder (seit C++11) const T, der folgende Ausdruck gültig ist und seine spezifizierten Effekte hat

 Ausdruck  Typ Effekte
a == b erfüllt BooleanTestable
(bis C++20)
Etabliert eine Äquivalenzrelation, d.h. sie erfüllt die folgenden Eigenschaften
  • Für alle Werte von a ergibt a == a true.
  • Wenn a == b, dann b == a.
  • Wenn a == b und b == c, dann a == c.
modelliert boolean-testable
(seit C++20)

[bearbeiten] Hinweise

Um diese Anforderung zu erfüllen, müssen Typen, die keine eingebauten Vergleichsoperatoren haben, einen benutzerdefinierten operator== bereitstellen.

Für Typen, die sowohl EqualityComparable als auch LessThanComparable sind, unterscheidet die C++-Standardbibliothek zwischen

  • Gleichheit, was der Wert des Ausdrucks a == b ist und
  • Äquivalenz, was der Wert des Ausdrucks !(a < b) && !(b < a) ist.

[bearbeiten] Fehlerberichte

Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 283 C++98 auch wenn T EqualityComparable ist, die
Anforderungen galten nicht für const T Objekte
sie gelten für
const T anstelle von T
LWG 2114
(P2167R3)
C++98 Konvertierbarkeit in bool war zu schwach, um die Erwartungen der Implementierungen widerzuspiegeln Anforderungen verstärkt

[bearbeiten] Siehe auch

gibt an, dass der Operator == eine Äquivalenzrelation ist
(Konzept) [bearbeiten]