Параметры «потребления», объявленные как X & &, всегда должны быть перемещены из
Параметры «потребления», объявленные как X & &, всегда должны быть перемещены из.
При объявлении функции можно указать намерение переместить содержимое параметра функции, объявив его как ссылку rvalue, не являющуюся констом или шаблоном, или как «потребление» (X&&) параметр. Например, параметр этой функции объявляется как параметр потребления: void foo(std::vector<std::string>&& V). Это объявление подразумевает, что содержание вектора V предназначен для перемещения вместо копирования в теле функции.
При объявлении параметра функции как параметра «потребляй» используйте семантику перемещения при использовании параметра. В теле функции используйте std::move функция явно, если для вызова функции используется ссылка lvalue.
Polyspace ® помечает определение функции, если выполняются оба условия:
По крайней мере, один параметр функции объявляется как ссылка rvalue, отличная от const и non template, то есть «потребляйте» или X&& параметр.
Содержание X&& параметр не полностью перемещен в другой объект с помощью std::move функция в теле функции.
Polyspace не вызывает этот дефект в конструкторах перемещения и операторах назначения перемещения.
Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.
| Группа: Деклараторы |
| Категория: Обязательно, Автоматизировано |