std::less
Определено в заголовке <functional> | ||
|---|---|---|
template< class T > struct less; | (до C++14) | |
template< class T = void > struct less; | (с C++14) |
Объект-функция для выполнения сравнений. Основной шаблон вызывает operator< для типа T.
Специализации
|
(C++14) | объект-функция, реализующий 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() | проверяет, меньше ли первый аргумент второго (публичная функция-член) |
std::less::operator()
bool operator()( const T& lhs, const T& rhs ) const; | (до C++14) | |
constexpr bool operator()( const T& lhs, const T& rhs ) const; | (с 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 (warn: implicit conversion)
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 (warn: implicit conversion)
static_assert(std::less{}(5, 5.6) == true); // less<void>: 5.0 < 5.6
int main() {}Отчёты об ошибках
Следующие отчёты об ошибках, меняющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применимо к | Поведение, как опубликовано | Корректное поведение |
|---|---|---|---|
| LWG 2562 | C++98 | порядок следования указателей может быть несогласованным | гарантированно согласован |
См. также
объект-функция, реализующий x == y (шаблон класса) |
|
объект-функция, реализующий x > y (шаблон класса) |
|
|
(C++20) | объект-функция, реализующий x < y (класс) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/functional/less