Namespaces
Variants

C++ named requirements: LessThanComparable

From cppreference.net
C++ named requirements

Le type doit fonctionner avec < opérateur et le résultat doit avoir une sémantique standard.

Table des matières

Exigences

Le type T satisfait LessThanComparable si étant données les expressions a , b et c de type T ou const T (depuis C++11) , l'expression suivante est valide et a ses effets spécifiés :

Expression Type Effets
a < b satisfait BooleanTestable
(jusqu'à C++20)
Établit une relation de ordre strict faible avec les propriétés suivantes :
  • Pour tout a , ! ( a < a ) donne true .
  • Si a < b , alors ! ( b < a ) .
  • Si a < b et b < c , alors a < c .
  • En définissant equiv ( a, b ) comme ! ( a < b ) && ! ( b < a ) , si equiv ( a, b ) et equiv ( b, c ) , alors equiv ( a, c ) .
modélise boolean-testable
(depuis C++20)

Notes

Pour satisfaire cette exigence, les types qui n'ont pas d'opérateurs de comparaison intégrés opérateurs de comparaison doivent fournir un opérateur operator < défini par l'utilisateur.

Pour les types qui sont à la fois EqualityComparable et LessThanComparable , la bibliothèque standard C++ établit une distinction entre

  • Égalité , qui est la valeur de l'expression a == b et
  • Équivalence , qui est la valeur de l'expression ! ( a < b ) && ! ( b < a ) .

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 2114
( P2167R3 )
C++98 la convertibilité vers bool était trop faible pour refléter les attentes des implémentations exigences renforcées

Voir aussi

un BinaryPredicate qui établit une relation d'ordre
(exigence nommée)
spécifie qu'une relation impose un ordre faible strict
(concept)