临时到const引用的特定绑定形式无效

时间:2013-04-25 13:16:10

标签: c++ temporary const-reference

鉴于

struct A
{
    void a(void) { std::cout << "A" << std::endl; }
};

const A &a = A(); /* Make a copy of A and bind to a */
const A &b(A());  /* Does nothing */

a.a(); /* Prints A */
b.a(); /* Error, same as if b doesn't exist */

为什么第二种形式的“将临时绑定到const引用”似乎等同于无操作?

1 个答案:

答案 0 :(得分:2)

这只是most vexing parse的另一种情况,您要声明一个函数而不是A的const引用。

你可以通过使用C ++ 11统一初始化来解决这个问题:

const A &b{A()};