C ++ 11在类初始化中为非静态数据成员

时间:2013-10-20 06:59:56

标签: c++ c++11

假设我有一个类Foo,如下所示:

struct Foo {
    int a;
    int b;
};

然后我定义了第二个类:

struct Bar {
    Foo bar{1, 2}; // error C2661: no overloaded function takes 2 arguments
};

如果Foo bar{1, 2}不是类成员,则代码bar可以正常工作:

int main() {
    Foo bar{1, 2}; // OK
}

班级Bar的代码有什么问题吗?

1 个答案:

答案 0 :(得分:3)

您的代码没有任何问题。这是一个compiler bug

clang ++和g ++都正确处理这些限定列表初始值设定项。有关演示正确行为的g ++,请参阅http://coliru.stacked-crooked.com/a/5d45e3645eec0476