C++ 允许将右值绑定到非常量左值引用吗?

C++ 允许将右值绑定到非常量左值引用吗?,c++,visual-studio-2010,visual-c++,C++,Visual Studio 2010,Visual C++,在研究右值和右值引用的过程中,我看到了一篇优秀的文章,其中出现了下表: lvalue const lvalue rvalue const rvalue --------------------------------------------------------- X& yes const X& yes yes yes yes X&&

在研究右值和右值引用的过程中,我看到了一篇优秀的文章,其中出现了下表:

            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++只允许一个LValk非const绑定到一个非const LValk引用。

尝试用<代码> /W4< /代码>编译它应该给你一个关于“邪恶扩展”的警告。具体来说,警告。他们真的没有把这个废话变成什么?