Переместить конструктор на производный объект

Если у вас есть производный объект с конструктором перемещения и базовый объект также имеет семантику перемещения, как правильно вызвать конструктор перемещения базового объекта из конструктора перемещения производного объекта?

Сначала я попробовал самое очевидное:

 Derived(Derived&& rval) : Base(rval)
 { }

Тем не менее, это, кажется, в конечном итоге вызывает базовый объектконструктор копирования, Затем я попытался явно использоватьstd::move вот так:

 Derived(Derived&& rval) : Base(std::move(rval))
 { }

Это сработало, но я запутался, зачем это нужно. я думалstd::move просто возвращает ссылку на значение. Но так как в этом примереrval это уже ссылка на rvalue, вызовstd::move должно быть лишним. Но если я не используюstd::move здесь он просто вызывает конструктор копирования. Так почему же призыв кstd::move необходимо?

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

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