Скажем, у меня есть следующая функция
void doWork(Widget && param) // param is an LVALUE of RRef type
{
Widget store = std::move(param);
}
Зачем мне прикладывать param
к rvalue с помощью std::move()
? Разве не должно быть очевидно, что тип param
является rvalue, поскольку он был объявлен в сигнатуре функции как ссылка rvalue? Не следует ли автоматически ссылаться на конструктор перемещения здесь только по этому принципу?
Почему это не происходит по умолчанию?