2

在研究 rvalues 和 rvalue references 时,我被指出了出色的帖子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?
}

我的误解在哪里?

4

1 回答 1

3

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

于 2012-12-05T23:47:57.550 回答