C++ именованные требования: EqualityComparable
Тип должен работать с оператором == и результат должен иметь стандартную семантику.
Требования
Тип T удовлетворяет EqualityComparable, если
Учитывая
-
a,bиc, выражения типаTили(с C++11)const T.
Следующие выражения должны быть допустимы и иметь указанное действие:
| Выражение | Тип возвращаемого значения | Требования |
|---|---|---|
a == b |
неявное преобразование к bool | Устанавливает отношение эквивалентности, то есть удовлетворяет следующим свойствам:
|
Примечания
Для удовлетворения этого требования типы, не имеющие встроенных операторов сравнения, должны предоставить пользовательский оператор==.
Для типов, которые являются как EqualityComparable, так и LessThanComparable, стандарт C++ различает равенство, которое является значением выражения a == b, и эквивалентность, которая является значением выражения !(a < b) && !(b < a).
Отчеты об ошибках
Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применено к | Поведение, как опубликовано | Правильное поведение |
|---|---|---|---|
| LWG 283 | C++98 | даже если T является EqualityComparable, требования не применялись к const T объектам | они применяются к const T вместо T |
См. также
|
(C++20) | определяет, что оператор == является отношением эквивалентности (концепция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/EqualityComparable