Namespaces
Variants

std::experimental::ranges:: less

From cppreference.net
Definido en el encabezado <experimental/ranges/functional>
template < class T = void >

requires StrictTotallyOrdered < T > ||
Same < T, void > ||
/* < on two const T lvalues invokes a built-in operator comparing pointers */

struct less ;
(ranges TS)
template <>
struct less < void > ;
(ranges TS)

Objeto función para realizar comparaciones. La plantilla principal invoca operator < en lvalues constantes de tipo T . La especialización less<void> deduce los tipos de parámetros del operador de llamada a función de los argumentos (pero no el tipo de retorno).

Todas las especializaciones de less son Semiregular .

Contenidos

Tipos de miembros

Tipo de miembro Definición
is_transparent (miembro solo de la especialización less<void> ) /* no especificado */

Funciones miembro

operator()
verifica si el primer argumento es menor que el segundo
(función miembro pública)

std::experimental::ranges::less:: operator()

constexpr bool operator ( ) ( const T & x, const T & y ) const ;
(1) (miembro solo de la plantilla primaria less<T> )
template < class T, class U >

requires StrictTotallyOrderedWith < T, U > ||
/* std::declval<T>() < std::declval<U>() se resuelve a
un operador incorporado que compara punteros */

constexpr bool operator ( ) ( T && t, U && u ) const ;
(2) (miembro solo de la especialización less<void> )
1) Compara x e y . Equivalente a return ranges:: less <> { } ( x, y ) ; .
2) Compara t y u . Equivalente a return std:: forward < T > ( t ) < std:: forward < U > ( u ) ; , excepto cuando esa expresión se resuelve en una llamada a un operator < incorporado que compara punteros.

Cuando una llamada a (1) o (2) invocaría un operador incorporado que compara punteros de tipo P , el resultado se determina de la siguiente manera:

  • Retorna true si el valor (posiblemente convertido) del primer argumento precede al valor (posiblemente convertido) del segundo argumento en el orden total estricto definido por la implementación sobre todos los valores de puntero de tipo P . Este orden total estricto es consistente con el orden parcial impuesto por los operadores incorporados < , > , <= , y >= .
  • En caso contrario, retorna false .

El comportamiento es indefinido a menos que las secuencias de conversión de T y U a P preserven la igualdad (ver más abajo).

Preservación de igualdad

Una expresión preserva la igualdad si produce salidas iguales dadas entradas iguales.

  • Las entradas de una expresión consisten en sus operandos.
  • Las salidas de una expresión consisten en su resultado y todos los operandos modificados por la expresión (si los hay).

Toda expresión requerida para preservar la igualdad debe además ser estable : dos evaluaciones de dicha expresión con los mismos objetos de entrada deben tener salidas iguales en ausencia de cualquier modificación explícita intermedia de esos objetos de entrada.

Notas

A diferencia de std::less , ranges::less requiere que los seis operadores de comparación < , <= , > , >= , == y != sean válidos (mediante las restricciones StrictTotallyOrdered y StrictTotallyOrderedWith ).

Ejemplo

Véase también

objeto función que implementa x < y
(plantilla de clase)