允许将右值绑定到非常量左值引用

Allowed to bind an rvalue to a non-const lvalue reference?

本文关键字:非常 常量 引用 绑定      更新时间:2023-10-16

在研究右值和右值引用时,有人指出了出色的发布 https://stackoverflow.com/a/11540204/368896,其中显示了下表:

            lvalue   const lvalue   rvalue   const rvalue
---------------------------------------------------------              
X&          yes
const X&    yes      yes            yes      yes
X&&                                 yes
const X&&                           yes      yes

请注意,该表指示右值不能绑定到非常量左值引用。

但是,在VS2010中,我似乎能够这样做:

class A
{};
int main()
{
    A & a = A(); // Binding an rvalue to a non-const lvalue reference?
}

我的误会在哪里?

这是

Microsoft编译器的编译器"扩展"(或"错误",取决于您的观点)。C++仅允许将左值的非常量绑定到非常量右值引用。