move

Convierte incondicionalmente su argumento en una referencia rvalue y de este modo indica que se puede mover si su tipo tiene habilitado el movimiento.

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

Parámetros

Parámetro

Descripción

Type

Un tipo inferido a partir del tipo del argumento pasado en Arg, junto con las reglas de contracción de referencias.

Arg

Argumento que se va a convertir. Aunque el tipo de Arg parece estar especificado como una referencia rvalue, move también acepta argumentos lvalue porque las referencias lvalue pueden enlazarse con las referencias rvalue.

Valor devuelto

Arg como referencia rvalue, independientemente de si su tipo es un tipo de referencia.

Comentarios

El argumento de plantilla Type no está pensado para especificarse explícitamente, sino para deducirse a partir del tipo del valor pasado en Arg. El tipo de Type se ajusta más en función de las reglas de contracción de referencias.

move no mueve su argumento. En lugar de esto, al convertir incondicionalmente su argumento (que podría ser un lvalue) en una referencia rvalue, permite al compilador mover posteriormente, en lugar de copiar, el valor pasado en Arg si su tipo tiene habilitado el movimiento. Si su tipo no tiene habilitado el movimiento, se copia.

Si el valor pasado en Arg es lvalue (es decir, tiene nombre o se puede tomar su dirección), se invalida cuando se produce el movimiento. No haga referencia al valor pasado en Arg por su nombre o dirección una vez que se haya movido.

Requisitos

Encabezado: <utility>

Espacio de nombres: std

Vea también

Referencia

<utility>

Lvalues y rvalues