Namespaces
Variants

C++ named requirements: EqualityComparable

From cppreference.net
C++ named requirements

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:
  • Para todos los valores de a , a == a produce true .
  • Si a == b , entonces b == a .
  • Si a == b y b == c , entonces a == c .
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)