Spec-Zone.ru › C++

std::ranges::less

Определено в заголовочном файле <functional>
struct less;
(с C++20)

Объект-функция для выполнения сравнения. Выводит типы параметров оператора вызова функции из аргументов (но не тип возвращаемого значения).

Вложенные типы

Вложенный тип Определение
is_transparent неопределено

Члены-функции

operator()
проверяет, является ли первый аргумент меньше второго
(общедоступная функция-член)

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

template< class T, class U >
constexpr bool operator()( T&& t, U&& u ) const;

Учитывая выражение std::forward<T>(t) < std::forward<U>(u) как expr:

  • Если expr приводит к вызову встроенного оператора < для сравнения указателей, с учетом составного типа указателя для t и u как P:
    • Если преобразованный t предшествует преобразованному u (оба имеют тип P) в определяемом реализацией строгом полном порядке для указателей, возвращает true, в противном случае возвращает false.
    • Если последовательность преобразования из T в P или последовательность преобразования из U в P не является сохраняющей равенство, поведение не определено.
  • В противном случае:
    • Возвращает результат expr.
    • Если std::totally_ordered_with<T, U> не моделируется, поведение не определено.

Этот перегруз участвует в разрешении перегрузки только в том случае, если std::totally_ordered_with<T, U> выполняется.

Если существует выражение expr1 типа T и выражение expr2 типа U, такие, что результаты сравнения expr1 и expr2 нарушают строгое полное упорядочение (правила определены ниже), поведение не определено.

Результаты сравнения expr1 и expr2 следуют строгому полному упорядочению только в том случае, если ровно одно из следующих выражений выполняется true:

  • std::ranges::less{}(expr1, expr2)
  • std::ranges::less{}(expr2, expr1)
  • std::ranges::equal_to{}(expr1, expr2)

Примечания

В отличие от std::less, std::ranges::less требует, чтобы все шесть операторов сравнения <, <=, >, >=, == и != были допустимы (через ограничение totally_ordered_with).

Пример

Отчеты об ошибках

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

DR Применен к Поведение, как опубликовано Корректное поведение
LWG 3530 C++20 синтаксические проверки были ослаблены при сравнении указателей только семантические требования ослаблены

См. также

less
объект-функция, реализующий x < y
(шаблон класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/functional/ranges/less

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API