C++ named requirements: LessThanComparable
Тип должен работать с
<
оператором, и результат должен иметь стандартную семантику.
Содержание |
Требования
Тип
T
удовлетворяет требованиям
LessThanComparable
, если для данных выражений
a
,
b
и
c
типа
T
или
const
T
(начиная с C++11)
, следующее выражение является корректным и имеет указанные эффекты:
| Выражение | Тип | Эффекты |
|---|---|---|
| a < b |
удовлетворяет
BooleanTestable
(до C++20) |
Устанавливает отношение
строгого слабого порядка
со следующими свойствами:
|
моделирует
boolean-testable
(начиная с C++20) |
Примечания
Для удовлетворения этого требования, типы, не имеющие встроенных операторов сравнения , должны предоставлять пользовательский operator < .
Для типов, которые являются одновременно EqualityComparable и LessThanComparable , стандартная библиотека C++ проводит различие между
- Равенство , которое является значением выражения a == b и
- Эквивалентность , которое является значением выражения ! ( a < b ) && ! ( b < a ) .
Отчеты о дефектах
Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
|
LWG 2114
( P2167R3 ) |
C++98 | конвертируемость в bool была слишком слабой для отражения ожиданий реализаций | требования усилены |
Смотрите также
|
a
BinaryPredicate
that establishes an ordering relation
(именованное требование) |
|
|
(C++20)
|
specifies that a
relation
imposes a strict weak ordering
(концепт) |