C++ named requirements: EqualityComparable
Le type doit fonctionner avec l'opérateur
==
et le résultat doit avoir une sémantique standard.
Table des matières |
Exigences
Le type
T
satisfait
EqualityComparable
si, étant données les expressions
a
,
b
et
c
de type
T
ou
(depuis C++11)
const
T
, l'expression suivante est valide et a les effets spécifiés :
| Expression | Type | Effets |
|---|---|---|
| a == b |
satisfait
BooleanTestable
(jusqu'en C++20) |
Établit une
relation d'équivalence
, c'est-à-dire qu'elle satisfait les propriétés suivantes :
|
modélise
boolean-testable
(depuis C++20) |
Notes
Pour satisfaire cette exigence, les types qui ne disposent pas d'opérateurs de comparaison intégrés 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 | Applicable à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 283 | C++98 |
même si
T
est
EqualityComparable
, les exigences
ne s'appliquaient pas aux objets const T |
elles s'appliquent à
const T au lieu de
T
|
|
LWG 2114
( P2167R3 ) |
C++98 | la convertibilité en bool était trop faible pour refléter les attentes des implémentations | exigences renforcées |
Voir aussi
|
spécifie que l'opérateur
==
est une relation d'équivalence
(concept) |