Поделиться через


move

Безусловно приводит свой аргумент к ссылке rvalue, тем самым указывая, что его можно переместить, если его тип допускает перемещения.

template<class Type>
    typename remove_reference<Type>::type&& move(Type&& Arg) noexcept;

Параметры

Параметр

Описание

Type

Тип, выведенный из типа аргумента, переданного в Arg, а также правила сворачивания ссылок.

Arg

Аргумент для приведения. Несмотря на то, что тип Arg определен как ссылка rvalue, move также принимает аргументы lvalue, поскольку ссылки lvalue можно привязать к ссылкам rvalue.

Возвращаемое значение

Arg используется в качестве ссылки rvalue вне зависимости от того, является ли его тип ссылочным.

Заметки

Аргумент шаблона Type следует не задавать явным образом, но выводить из типа значения, переданного в Arg. Тип Type дополнительно адаптируется в соответствии с правилами сворачивания ссылок.

move не перемещает свой аргумент. Вместо этого, путем безусловного приведения аргумента (который может являться ссылкой lvalue) к ссылке rvalue он обеспечивает компилятору возможность впоследствии переместить, а не скопировать значение, переданное в Arg, если его тип допускает перемещение. Если тип значения не допускает перемещения, значение копируется.

Если значение, переданное в Arg, является ссылкой lvalue, то есть его имя или адрес можно получить, при перемещении оно становится недействительным. Не создавайте ссылки на значение, переданное в Arg, по имени или адресу после перемещения.

Требования

Заголовок: <utility>

Пространство имен: std

См. также

Ссылки

<utility>

Значения Lvalue и Rvalue