C++ named requirements: EqualityComparable
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Тип должен работать с
==
оператором, и результат должен иметь стандартную семантику.
Содержание |
Требования
Тип
T
удовлетворяет требованиям
EqualityComparable
, если для данных выражений
a
,
b
и
c
типа
T
или
(since C++11)
const
T
, следующее выражение является корректным и имеет указанные эффекты:
| Выражение | Тип | Эффекты |
|---|---|---|
| a == b |
удовлетворяет
BooleanTestable
(до C++20) |
Устанавливает
отношение эквивалентности
, то есть удовлетворяет следующим свойствам:
|
моделирует
boolean-testable
(начиная с C++20) |
Примечания
Для удовлетворения этого требования, типы, не имеющие встроенных операторов сравнения , должны предоставлять пользовательский operator == .
Для типов, которые являются одновременно EqualityComparable и LessThanComparable , стандартная библиотека C++ проводит различие между
- Равенство , которое является значением выражения a == b и
- Эквивалентность , которое является значением выражения ! ( a < b ) && ! ( b < a ) .
Отчёты о дефектах
Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение в опубликованной версии | Корректное поведение |
|---|---|---|---|
| LWG 283 | C++98 |
даже если
T
является
EqualityComparable
, требования
не применялись к объектам const T |
применяются к
const T вместо
T
|
|
LWG 2114
( P2167R3 ) |
C++98 | конвертируемость в bool была слишком слабой для отражения ожиданий реализаций | требования усилены |
Смотрите также
|
определяет, что оператор
==
является отношением эквивалентности
(концепт) |