Почему 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? Не должен ли конструктор перемещения автоматически вызываться здесь только на этом принципе?
Почему это не происходит по умолчанию?