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