Namespaces
Variants

C++ named requirements: LessThanComparable

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

Ausdruck Typ Effekte
a < b erfüllt BooleanTestable
(bis C++20)
Etabliert eine strikte schwache Ordnungsrelation mit folgenden Eigenschaften:
  • Für alle a , ! ( a < a ) liefert true .
  • Wenn a < b , dann ! ( b < a ) .
  • Wenn a < b und b < c , dann a < c .
  • Definiert man equiv ( a, b ) als ! ( a < b ) && ! ( b < a ) , dann gilt: Wenn equiv ( a, b ) und equiv ( b, c ) , dann equiv ( 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, trifft 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 2114
( P2167R3 )
C++98 Konvertierbarkeit zu bool war zu schwach, um die Erwartungen der Implementierungen widerzuspiegeln Anforderungen verstärkt

Siehe auch

eine BinaryPredicate die eine Ordnungsrelation definiert
(Named Requirement)
spezifiziert dass eine relation eine strikte schwache Ordnung erzwingt
(Konzept)