Namespaces
Variants

std::less

С сайта ru.cppreference.net
 
 
Библиотека утилит
Поддержка языка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования возможностей библиотеки (C++20)
Утилиты программы
Функции с переменным числом аргументов
Поддержка корутин (C++20)
Поддержка контрактов (C++26)
Трёхстороннее сравнение
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Общие утилиты
Операторы отношений (устарело в C++20)
 
Функциональные объекты
Вызов функций
(C++17)(C++23)
Тождественный функциональный объект
(C++20)
Старые binder и адапторы
(до C++17*)
(до C++17*)
(до C++17*)
(до C++17*)
(до C++17*)(до C++17*)(до C++17*)(до C++17*)
(до C++20*)
(до C++20*)
(до C++17*)(до C++17*)
(до C++17*)(до C++17*)

(до C++17*)
(до C++17*)(до C++17*)(до C++17*)(до C++17*)
(до C++20*)
(до C++20*)
 
Определён в заголовочном файле <functional>
template< class T >
struct less;
(до C++14)
template< class T = void >
struct less;
(начиная с C++14)

Функциональный объект для выполнения сравнения. Основной шаблон вызывает operator< для типа T.

Специализации

функциональный объект, реализующий x < y с выведением типов параметров и возвращаемого значения
(специализация шаблона класса)

Типы членов

Тип Определение
result_type (устарело в C++17) (удалено в C++20) bool
first_argument_type (устарело в C++17) (удалено в C++20) T
second_argument_type (устарело в C++17) (удалено в C++20) T

Эти типы членов получены через публичное наследование std:: binary_function < T, T, bool > .

(до C++11)

Функции-члены

operator()
проверяет, является ли первый аргумент меньше второго
(public member function)

std::less:: operator()

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

Проверяет, является ли lhs меньшим , чем rhs .

Параметры

lhs, rhs - значения для сравнения

Возвращаемое значение

lhs < rhs .

Если T является типом указателя, результат соответствует определенной реализацией строгой тотальной упорядоченности указателей .

Исключения

Может выбрасывать определенные реализацией исключения.

Возможная реализация

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

Пример

#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 (предупреждение: неявное преобразование)
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 (предупреждение: неявное преобразование)
static_assert(std::less{}(5, 5.6) == true);         // less<void>: 5.0 < 5.6
int main() {}

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 2562 C++98 the pointer total order might be inconsistent guaranteed to be consistent

Смотрите также

функциональный объект, реализующий x == y
(шаблон класса)
функциональный объект, реализующий x > y
(шаблон класса)
ограниченный функциональный объект, реализующий x < y
(класс)