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