Spec-Zone.ru › C++

C++ именованные требования: EqualityComparable

Тип должен работать с оператором == и результат должен иметь стандартную семантику.

Требования

Тип T удовлетворяет EqualityComparable, если

Учитывая

  • a, b и c, выражения типа T или(с C++11) const T.

Следующие выражения должны быть допустимы и иметь указанное действие:

Выражение Тип возвращаемого значения Требования
a == b неявное преобразование к bool Устанавливает отношение эквивалентности, то есть удовлетворяет следующим свойствам:
  • Для всех значений a, a == a возвращает true.
  • Если a == b, то b == a.
  • Если a == b и b == c, то a == c.

Примечания

Для удовлетворения этого требования типы, не имеющие встроенных операторов сравнения, должны предоставить пользовательский оператор==.

Для типов, которые являются как EqualityComparable, так и LessThanComparable, стандарт C++ различает равенство, которое является значением выражения a == b, и эквивалентность, которая является значением выражения !(a < b) && !(b < a).

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

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

DR Применено к Поведение, как опубликовано Правильное поведение
LWG 283 C++98 даже если T является EqualityComparable, требования не применялись к const T объектам они применяются к const T вместо T

См. также

equality_comparableequality_comparable_with
(C++20)
определяет, что оператор == является отношением эквивалентности
(концепция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/EqualityComparable

Spec-Zone.ru

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