Функция, которая содержит "передающую ссылку" в качестве ее аргумента, не должна быть перегружена
Функция, которая содержит "передающую ссылку" в качестве ее аргумента, не должна быть перегружена.
Предположим, что вы задаете функцию шаблона func
с передающим параметром ссылки T&&
как это:
template <typename T> void func(T&& param) {}
void func(int param) {}
func
называется, это затрудняет, чтобы сказать, решает ли вызов к функции шаблона или перегрузке, не работая через запутанность механизма разрешения перегрузки. Разработчик или рецензент могут легко перепутать, какая функция вызвана после разрешения перегрузки. Например, вызов функции:short var; //... func(var);
short
продвигает int
.Чтобы избежать этой проблемы, не перегружайте на функциях шаблона тот, берут передающие ссылки. Для конструкторов шаблона можно ограничить конструкторов не совпадать с перегрузками (использующий std::enable_if
). Когда ограничено этот путь, нет никакого осциллографа для беспорядка между конструктором шаблона и его перегрузками.
Средство проверки отмечает определения функций шаблона, которые содержат передающие ссылки (параметры шаблона с типом T&&
) если те функции также перегружаются. События ниже результата средства проверки показывают местоположения перегрузок. Если перегрузка является неявно заданной функцией членства, такой как конструктор, соответствующее событие указывает на содержание класса.
Средство проверки показывает, что вы все обрабатываете функции по шаблону с передачей ссылок, которые перегружаются. Если вы решаете, что перегрузка не может вызвать беспорядок, добавьте комментарий в свой результат или код, чтобы избежать другого анализа. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Выравнивания или Результаты Адреса в Polyspace доступ Через Исправления ошибок или Выравнивания.
Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.
Группа: Перегрузка |
Категория: необходимый, автоматизированный |