std::ranges:: less
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Old binders and adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Определено в заголовочном файле
<functional>
|
||
|
struct
less
;
|
(начиная с C++20) | |
Функциональный объект для выполнения сравнений. Выводит типы параметров оператора вызова функции из аргументов (но не тип возвращаемого значения).
Содержание |
Вложенные типы
| Вложенный тип | Определение |
is_transparent
|
unspecified |
Функции-члены
|
operator()
|
проверяет, является ли первый аргумент
меньше
второго
(public member function) |
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
приводит к вызову
встроенного
operator
<
для сравнения указателей, и задан
составной тип указателя
для
t
и
u
как
P:
-
-
Если преобразованный
t
предшествует преобразованному
u
(оба имеют тип
P) в определяемом реализацией строгом полном порядке указателей , возвращает true , иначе возвращает false . -
Если последовательность преобразования из
TвPили последовательность преобразования изUвPне является сохраняющей равенство , поведение не определено.
-
Если преобразованный
t
предшествует преобразованному
u
(оба имеют тип
- Иначе:
-
- Возвращает результат 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 | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3530 | C++20 | syntactic checks were relaxed while comparing pointers | only semantic requirements are relaxed |
Смотрите также
|
функциональный объект, реализующий
x
<
y
(шаблон класса) |