允许将rvalue绑定到非const左值引用?

时间:2012-12-05 23:44:31

标签: c++ visual-studio-2010 visual-c++

在研究rvalues和rvalue引用时,我一直指向优秀的帖子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

请注意,该表指示rvalue无法绑定到非const左值引用。

然而,在VS2010中我似乎能够这样做:

class A
{};

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

我的误解在哪里?

1 个答案:

答案 0 :(得分:3)

这是一个编译器"扩展" (或者#34; bug",取决于您的观点)Microsoft编译器。 C ++只允许将左值非常量绑定到非常量左值引用。