Функция std::move()
определяется как
template<typename T>
typename std::remove_reference<T>::type&& move(T && t)
{
return static_cast<typename std::remove_reference<T>::type&&>( t );
}
Есть четыре места, где я могу представить, как будет вызываться конструктор перемещения:
- Когда передается параметр.
- Когда выполняется трансляция.
- Когда возвращается результат.
- Не в самой функции
std::move()
, а, возможно, в том месте, где в конечном итоге возвращается возвращаемая ссылка.
Я бы поставил на номер 4, но я не уверен на 100%, поэтому, пожалуйста, объясните свой ответ.