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