Espacios de nombres
Variantes
Acciones

Requisitos denominados de C++: EqualityComparable

De cppreference.com
< cpp‎ | named req
 
 
Requisitos denominados de C++
Números aleatorios
Concurrencia
(C++11)
(C++11)
Rangos
Vista multidimensional
Otros

 

El tipo debe funcionar con el operador == y el resultado debe tener una semántica estándar.

Contenido

[editar] Requisitos

El tipo T satisface EqualityComparable si dadas las expresiones a, b y c, de tipo T o const T (desde C++11), las siguientes expresiones son válidas y tiene los efectos especificados:

 Expresión  Tipo Efectos
a == b convertible  implícitamente a bool 
(hasta C++23)
Establece una relación de equivalencia, es decir, satisface las siguientes propiedades:
  • Para todos los valores de a, a == a resultado true.
  • Si a == b, entonces b == a.
  • Si a == b y b == c, entonces a == c.
modelos boolean-testable
(desde C++23)

[editar] Notas

Para satisfacer este requisito, los tipos que no tienen operadores de comparación integrados deben proporcionar un operator== definido por el usuario.

Para los tipos que son tanto EqualityComparable como LessThanComparable, la biblioteca estándar de C++ hace 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).

[editar] Informes de defectos

Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.

ID Aplicado a Comportamiento según lo publicado Comportamiento correcto
LWG 283 C++98 incluso si T es EqualityComparable, los
requisitos no se aplican a los objetos const T
Se aplican a const T
en lugar de T

[editar] Véase también

especifica que el operador == es una relación de equivalencia
(concepto) [editar]