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