为什么Rvalue不能绑定Lvalue引用

Why Rvalue cannot bind Lvalue reference?

本文关键字:Lvalue 引用 绑定 不能 Rvalue 为什么      更新时间:2023-10-16

这是一个简单而古老的问题。我确信这一定是在别的地方问的。但在谷歌搜索了30多分钟后,我决定再次询问这里。关于价值参考的信息泛滥,让我很难找到合适的网页来解决这个问题。

这个决定背后的原因是什么,右值不能绑定左值引用?

Rvalue通常是即将死亡的东西或文字。如果此代码合法:
int &r = 5
那么你可以修改5,但这没有意义!引用(任何类型的)只是被引用对象的别名
但是,对const的左值引用禁止对对象进行任何更改,因此您可以将它们绑定到右值
const int &r = 5; // ok r = 10; // compilation error