Namespaces
Variants

C++ named requirements: LessThanComparable

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 LessThanComparable si dadas las expresiones a , b y c de tipo T o const T (desde C++11) , 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 ordenamiento estricto débil con las siguientes propiedades:
  • Para todo a , ! ( a < a ) produce true .
  • Si a < b , entonces ! ( b < a ) .
  • Si a < b y b < c , entonces a < c .
  • Definiendo equiv ( a, b ) como ! ( a < b ) && ! ( b < a ) , si equiv ( a, b ) y equiv ( b, c ) , entonces equiv ( 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 publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
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

un BinaryPredicate que establece una relación de ordenamiento
(requerimiento con nombre)
especifica que una relation impone un ordenamiento débil estricto
(concepto)