Espacios de nombres
Variantes
Acciones

std::less

De cppreference.com
< cpp‎ | utility‎ | functional
 
 
Biblioteca de servicios
 
Objetos función
Envoltorios de funciones
(C++11)
(C++11)
Aplicación parcial de funciones
(C++20)
(C++11)
Invocación de funciones
(C++17)(C++23)
Objeto función identidad
(C++20)
Envoltorios de referencias
(C++11)(C++11)
Envoltorios de operador transparentes
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
Negadores
(C++17)
Buscadores
Comparadores restringidos
Vinculadores y adaptadores antiguos
(hasta C++17)
(hasta C++17)
(hasta C++17)
(hasta C++17)
(hasta C++17)(hasta C++17)(hasta C++17)(hasta C++17)
(hasta C++20)
(hasta C++20)
(hasta C++17)(hasta C++17)
(hasta C++17)(hasta C++17)

(hasta C++17)
(hasta C++17)(hasta C++17)(hasta C++17)(hasta C++17)
(hasta C++20)
(hasta C++20)
 
Definido en el archivo de 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 a operator< en el tipo T.

Contenido

[editar] Especializaciones

Función objeto que implementa x < y deduciendo los argumentos y los tipos de retorn.
(especialización de plantilla de clase) [editar]

[editar] Tipos miembro

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

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

(hasta C++11)

[editar] Funciones miembro

operator()
Comprueba 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 - Los valores a comparar.

Valor de retorno

lhs < rhs.

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

[editar] Excepciones

Puede lanzar excepciones definidas por la implementación.

Posible implementación

constexpr bool operator()(const T& lhs, const T& rhs) const 
{
    return lhs < rhs; // asume que la implementación maneja el orden total de punteros
}

[editar] 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() {}


[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 2562 C++98 El orden total de punteros podría ser inconsistente. Se garantiza que es consistente.

[editar] Véase también

Objeto función que implementa x == y.
(plantilla de clase) [editar]
Objeto función que implementa x > y.
(plantilla de clase) [editar]
Objeto función que implementa x < y.
(clase) [editar]