Аргумент 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;
}
}
Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».
| Группа: Библиотека языковой поддержки |
| Категория: Необходимый, Автоматизированный |