Namespaces
Variants

std:: less

From cppreference.net
Utilities library
Function objects
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Old binders and adaptors
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
Definido en el encabezado <functional>
template < class T >
struct less ;
(hasta C++14)
template < class T = void >
struct less ;
(desde C++14)

Objeto función para realizar comparaciones. La plantilla principal invoca operator < en el tipo T .

Contenidos

Especializaciones

objeto función que implementa x < y deduciendo tipos de parámetros y retorno
(especialización de plantilla de clase)

Tipos de miembros

Tipo Definición
result_type (obsoleto en C++17) (eliminado en C++20) bool
first_argument_type (obsoleto en C++17) (eliminado en C++20) T
second_argument_type (obsoleto en C++17) (eliminado en C++20) T

Estos tipos de miembros se obtienen heredando públicamente de std:: binary_function < T, T, bool > .

(hasta C++11)

Funciones miembro

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

std::less:: operator()

bool operator ( ) ( const T & lhs, const T & rhs ) const ;
(constexpr desde C++14)

Comprueba si lhs es menor que rhs .

Parámetros

lhs, rhs - valores a comparar

Valor de retorno

lhs < rhs .

Si T es un tipo puntero, el resultado es consistente con el orden total estricto definido por la implementación sobre punteros .

Excepciones

Puede lanzar excepciones definidas por la implementación.

Implementación posible

constexpr bool operator()(const T& lhs, const T& rhs) const 
{
    return lhs < rhs; // assumes that the implementation handles pointer total order
}

Ejemplo

#include <functional>
template<typename A, typename B, typename C = std::less<>>
constexpr bool fun(A a, B b, C cmp = C{})
{
    return cmp(a, b);
}
static_assert(fun(1, 2) == true);
static_assert(fun(1.0, 1) == false);
static_assert(fun(1, 2.0) == true);
static_assert(std::less<int>{}(5, 5.6) == false);   // 5 < 5 (advertencia: conversión implícita)
static_assert(std::less<double>{}(5, 5.6) == true); // 5.0 < 5.6
static_assert(std::less<int>{}(5.6, 5.7) == false); // 5 < 5 (advertencia: conversión implícita)
static_assert(std::less{}(5, 5.6) == true);         // less<void>: 5.0 < 5.6
int main() {}

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 2562 C++98 el orden total de punteros podría ser inconsistente garantizado ser consistente

Véase también

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