Namensräume
Varianten
Aktionen

C++ benannte Anforderungen: LessThanComparable

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 LessThanComparable, wenn für Ausdrücke a, b und c vom Typ T oder const T(seit C++11), der folgende Ausdruck gültig ist und seine spezifizierten Effekte hat

 Ausdruck  Typ Effekte
a < b erfüllt BooleanTestable
(bis C++20)
Eine strikt schwache Ordnungsrelation mit den folgenden Eigenschaften
  • Für alle a ergibt !(a < a) den Wert true.
  • Wenn a < b, dann gilt !(b < a).
  • Wenn a < b und b < c, dann gilt a < c.
  • Definiert man equiv(a, b) als !(a < b) && !(b < a), dann gilt für equiv(a, b) und equiv(b, c) auch equiv(a, c).
modelliert boolean-testable
(seit C++20)

[bearbeiten] Anmerkungen

Um diese Anforderung zu erfüllen, müssen Typen, die keine integrierten Vergleichsoperatoren haben, einen benutzerdefinierten Operator 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 2114
(P2167R3)
C++98 Konvertierbarkeit in bool war zu schwach, um die Erwartungen der Implementierungen widerzuspiegeln Anforderungen verstärkt

[bearbeiten] Siehe auch

Ein Binärer Prädikat, das eine Ordnungsrelation etabliert
(benannte Anforderung)
gibt an, dass eine Relation eine strikt schwache Ordnung darstellt
(Konzept) [bearbeiten]