![]() |
#2
rjsp2017-06-20 08:47
|

int &&rref = 8; //右值引用
int &&r2 = rref; //(a) // error, rref是个左值
class A {
public:
A()=default;
A(A&& a) {/*...*/}; //(b)
//...
};
A aa = std::move(A()); //(c)
问题描述int &&r2 = rref; //(a) // error, rref是个左值
class A {
public:
A()=default;
A(A&& a) {/*...*/}; //(b)
//...
};
A aa = std::move(A()); //(c)
std::move 返回的右值引用, 表达式(a)实际调用移动构找函数(b)
相当与,移动构造函数的参数右值引用a绑定到std::move 返回的右值引用上,
可是我们知道,右值引用是不能绑定到左值上的
上述调用是可行的,但是为什么右值引用可以绑定到右值引用上呢?