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