¿Cuándo se llama el constructor move en la función `std :: move ()`?

La funciónstd::move() Se define como

template<typename T>
typename std::remove_reference<T>::type&& move(T && t)
{ 
    return static_cast<typename std::remove_reference<T>::type&&>( t ); 
}

Hay cuatro lugares donde puedo imaginar al constructor de movimiento que se llamará:

Cuando se pasa el parámetro.Cuando se realiza el reparto.Cuando se devuelve el resultado.No en elstd::move() Funciona en sí misma pero posiblemente en el lugar donde finalmente llega la referencia devuelta.

Apostaría por el número 4, pero no estoy 100% seguro, así que explique su respuesta.

Respuestas a la pregunta(2)

Su respuesta a la pregunta