Compartilhar via


move

Converte incondicionalmente seu argumento em uma referência de rvalue e, assim, os sinais que podem ser movidos se seu tipo for habilitado para movimento.

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

Parâmetros

Parâmetro

Descrição

Type

Um tipo deduzido do tipo do argumento passado em Arg, juntamente com as regras de recolhimento de referência.

Arg

O argumento a ser convertido. Embora o tipo de Arg pareça ser especificado como uma referência de rvalue, move também aceita argumentos lvalue, pois as referência de lvalue podem se associar a referências de rvalue.

Valor de retorno

Arg como uma referência de rvalue, seja ou não seu tipo um tipo de referência.

Comentários

O argumento de modelo Type não é destinado a ser especificado explicitamente, mas a ser deduzido do tipo do valor passado em Arg. O tipo de Type é ainda ajustado de acordo com as regras de recolhimento de referência.

move não move seu argumento. Em vez disso, ao converter incondicionalmente seu argumento (que pode ser um lvalue) em uma referência de rvalue, ele permite que o compilador mova subsequentemente, em vez de copiar, o valor passado em Arg se seu tipo for habilitado para movimento. Se seu tipo não for habilitado para movimento, ele será copiado.

Se o valor passado em Arg for um lvalue, isto é, tiver um nome ou seu endereço puder ser usado, ele será invalidado quando a movimentação ocorrer. Não faça referência ao valor passado em Arg por seu nome ou endereço depois que for movido.

Requisitos

Cabeçalho: <utility>

Namespace: std

Consulte também

Referência

<utility>

Lvalues e Rvalues