Sam*_*mik 7 c++ rvalue-reference
我有这个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/*)*/) {}
};
Run Code Online (Sandbox Code Playgroud)
我将传递_x给B作为右值引用,但是当它传递给A构造函数时它会被转换为左值,我必须使用std::move()它才能使它工作.我的问题是为什么_x是左值而不是左值参考a()?
任何具有名称的都是左值引用.您必须使用std :: move on参数将它们作为右值引用传递.