параметры «forward», объявленные как T & & &, всегда должны пересылаться
Параметры «forward», объявленные как T & & &, всегда должны пересылаться.
Поскольку ссылки rvalue не могут связываться с lvalues, функции, которые позволяют использовать семантику перемещения, используя ссылки rvalue в своей сигнатуре, не принимают lvalues. Эта проблема решается с помощью ссылки rvalue на неконст-объект типа шаблона, который называется параметром forward. Эти параметры могут связываться как с значениями rvalues, так и с значениями lvalues при сохранении их квалификаций cv и категорий значений. Параметры «forward» полезны, если требуется переслать значение целевому объекту или функции с помощью функции std::forward.
При объявлении шаблона функции с помощью параметра «Вперед» параметр не используется ни в каких операциях. Поскольку параметры Forward могут связываться как с lvalues, так и с rvalues, их использование в операции может повредить их квалификации cv и категории значений. Переслать эти параметры непосредственно адресату с помощью std::forward без использования их в операции.
Polyspace ® помечает параметр «Forward» в определении шаблона функции или лямбда-выражения, если какое-либо из этих условий верно:
Параметр «Forward» не пересылается адресату с помощью std::forward.
Операция, отличная от пересылки, выполняется для параметра «Forward» или для объекта-члена.
Polyspace игнорирует шаблоны и лямбда-выражения, которые остаются неиспользуемыми в коде.
Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.
| Группа: Деклараторы |
| Категория: Обязательно, Автоматизировано |