Не удается связать lvalue со ссылкой на rvalue
У меня есть этот фрагмент кода теста C ++,
#include <vector>
class A {
std::vector<int> x;
public:
A(std::vector<int>&& _x) : x(_x) {}
};
class B {
A a;
public:
B(std::vector<int>&& _x) : a(/*move(*/_x/*)*/) {}
};
Я прохожу_x
в B в качестве ссылки rvalue, но он передается в lvalue при передаче вA
конструктор и я должен использоватьstd::move()
заставить это работать. Мой вопрос: почему _x является lvalue, а не ссылкой на rvalue вa()
?