为左值参考指定Rvalue参考

suh*_*hwi 5 c++ c++11 c++14

int&& rv = 10;
int& lv = rv; //no error
Run Code Online (Sandbox Code Playgroud)

这怎么可能?

这与"参考崩溃规则"有关吗?

Naw*_*waz 6

 int&& rv = 10; 
 int& lv = rv; //no error
Run Code Online (Sandbox Code Playgroud)

首先,命名对象永远不是右值.其次,既然rv命名对象,它就不是右值,即使它绑定到右值.由于rv是左值,它可以毫无问题地绑定到左值.

请注意,rvalue-ness是表达式的属性,而不是变量.在上面的例子中,一个rvalue被创建出来10并且绑定到rv,正如我所说,它是左值.