Операторы сравнения должны быть функциями лица, не являющегося членом какой-либо организации, с идентичными типами параметра и noexcept.
Операторы сравнения должны быть функциями лица, не являющегося членом какой-либо организации, с идентичными типами параметра и noexcept.
Операторы сравнения не должны сравнивать объекты, которые имеют различные типы. Если вы передаете объекты различных типов в качестве аргументов к оператору сравнения, оператор должен смочь преобразовать один аргумент в тип данных другого.
Функции членства имеют свойственное ограничение что неявный параметр объекта (тот, упомянутый this указатель), не может быть преобразован в другой тип данных. Чтобы поддержать преобразования типа данных при необходимости, задайте операторы сравнения, когда лицо, не являющееся членом какой-либо организации, функционирует.
Выражения сравнения являются основными операциями и должны быть noexcept. Операторы сравнения, охваченные этим правилом:
==
!=
<
<=
>
>=
Примечание
Объявите операторы сравнения как friend позволять им получить доступ к внутренним данным, похожим на функцию членства. Эта практика позволена исключением в правиле A11-3-1.
Средство проверки отмечает операторы сравнения, которые заданы как функции членства. Средство проверки также отмечает операторы сравнения лица, не являющегося членом какой-либо организации, что:
Сравните неидентичные типы параметра, такие как class тип и int.
Не объявляются с noexcept спецификатор.
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
| Группа: Перегрузка |
| Категория: необходимый, автоматизированный |