允许将右值绑定到非常量左值引用吗?
Posted
技术标签:
【中文标题】允许将右值绑定到非常量左值引用吗?【英文标题】:Allowed to bind an rvalue to a non-const lvalue reference? 【发布时间】:2012-12-05 23:44:30 【问题描述】:在研究右值和右值引用时,我被指出了优秀的帖子https://***.com/a/11540204/368896,其中出现了下表:
lvalue const lvalue rvalue const rvalue
---------------------------------------------------------
X& yes
const X& yes yes yes yes
X&& yes
const X&& yes yes
请注意,该表表明右值不能绑定到非 const 左值引用。
但是,在 VS2010 中我似乎可以这样做:
class A
;
int main()
A & a = A(); // Binding an rvalue to a non-const lvalue reference?
我的误会在哪里?
【问题讨论】:
尝试使用/W4
编译它应该会给你一个关于“邪恶扩展”的警告。
特别是警告C4239。
他们真的还没有把这个废话转过来吗?
【参考方案1】:
这是 Microsoft 编译器的编译器“扩展”(或“错误”,取决于您的观点)。 C++ 只允许将左值非 const 绑定到非 const 左值引用。
【讨论】:
以上是关于允许将右值绑定到非常量左值引用吗?的主要内容,如果未能解决你的问题,请参考以下文章