C++ named requirements: EqualityComparable
El tipo debe funcionar con
==
operador y el resultado debe tener semántica estándar.
Contenidos |
Requisitos
El tipo
T
satisface
EqualityComparable
si dadas las expresiones
a
,
b
y
c
de tipo
T
o
(since C++11)
const
T
, la siguiente expresión es válida y tiene sus efectos especificados:
| Expresión | Tipo | Efectos |
|---|---|---|
| a == b |
cumple
BooleanTestable
(hasta C++20) |
Establece una
relación de equivalencia
, es decir, satisface las siguientes propiedades:
|
modela
boolean-testable
(desde C++20) |
Notas
Para satisfacer este requisito, los tipos que no tienen operadores de comparación incorporados deben proporcionar un operador operator == definido por el usuario .
Para los tipos que son tanto EqualityComparable como LessThanComparable , la biblioteca estándar de C++ establece una distinción entre
- Igualdad , que es el valor de la expresión a == b y
- Equivalencia , que es el valor de la expresión ! ( a < b ) && ! ( b < a ) .
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Se aplica a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 283 | C++98 |
incluso si
T
es
EqualityComparable
, los
requisitos no se aplicaban a objetos const T |
se aplican a
const T en lugar de
T
|
|
LWG 2114
( P2167R3 ) |
C++98 | la convertibilidad a bool era demasiado débil para reflejar las expectativas de las implementaciones | requisitos fortalecidos |
Véase también
|
especifica que el operador
==
es una relación de equivalencia
(concepto) |