Почему C ++ не перемещает конструкции по умолчанию? [Дубликат]

На этот вопрос уже есть ответ:

Rvalue Ссылка рассматривается как Lvalue? 4 ответа Ссылочный конструктор Lvalue вызывается вместо ссылочного конструктора rvalue 1 ответ

Скажи, у меня есть следующая функция

void doWork(Widget && param)  // param is an LVALUE of RRef type
{
    Widget store = std::move(param); 
}

Почему мне нужно сыгратьparam вернуться к значению сstd::move()? Разве не должно быть очевидно, что типparam является значением rvalue, поскольку оно было объявлено в сигнатуре функции как ссылка на значение rvalue? Не должен ли конструктор перемещения автоматически вызываться здесь только на этом принципе?

Почему это не происходит по умолчанию?

Ответы на вопрос(1)

Ваш ответ на вопрос