Оператор двоичной арифметики и побитовый оператор должны возвратить "prvalue"
Оператор двоичной арифметики и побитовый оператор должны возвратить "prvalue".
Операторы двоичной арифметики, такие как operator+()
и побитовые операторы, такие как operator|()
должен возвратить объект типа T
значением без спецификаторов (и не ссылки, T&
, или указатели, T*
). Это требование делает типы возврата сопоставимыми с реализацией тех же операторов в Библиотеке Стандарта C++. Разработчик, знакомый со стандартными операторами, может легко работать с перегруженными формами операторов.
prvalue или чистый rvalue являются объектом, который не имеет имени, не может быть указан или сослан, но может все еще быть перемещен от. Например, результатом вызова функции, которая возвращается значением, является prvalue.
Средство проверки отмечает реализации бинарных операторов и побитовых операторов, которые возвращаются:
Тип со спецификатором, таким как const
или volatile
.
Указатель или ссылка на другой тип.
Операторы, отмеченные средством проверки, включают:
Бинарные операторы, такие как operator+()
оператор
оператор
, и так далее.
Побитовые операторы, такие как operator&()
, operator|()
, operator<<()
, и так далее.
Обратите внимание на то, что средство проверки не показывает нарушения на operator<<()
и operator>>()
тот возврат std::basic_istream
, std::basic_ostream
, или std::basic_iostream
типы.
Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.
Группа: Перегрузка |
Категория: необходимый, автоматизированный |