Аргумент std:: forward не используется впоследствии
Аргумент std:: forward впоследствии не используется.
Обычно вы используете std::forward
в шаблоне функции, чтобы передать параметр ссылки переадресации в другую функцию. Ресурсы параметра могут быть переданы другому объекту посредством операции перемещения, в зависимости от категории значения параметра.
Для параметра rvalue параметр находится в неопределенном состоянии, если он перемещается из после вызова в std::forward
и его не следует использовать повторно.
Для параметра lvalue, Если вы повторно используете параметр после вызова std::forward
, изменения параметра могут повлиять на аргумент функции вызывающего абонента, которому вы передаете параметр.
Polyspace® помечает вызов, на который std::forward
если переадресуемый объект повторно используется после вызова. Polyspace также подсвечивает линии, где пересланный объект повторно используется в вашем коде.
Polyspace не помечает вызов std::forward
если его аргумент повторно используется в ветви, которая не может быть достигнута после вызова std::forward
. Например, в этом фрагменте кода ветвь, где повторно используется переменная t
не может быть достигнуто после того, как код входит в ветвь, где std::forward
используется.
template<typename T> void func(T&& t) { T&& p = t; switch(t) { case 0: p = std::forward<T>(t); break; case 1: t--; //t reused break; } }
Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».
Группа: Библиотека языковой поддержки |
Категория: Необходимый, Автоматизированный |