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