3

假设我有这样的课程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吗?

4

1 回答 1

3

你的代码没有问题。这是一个编译器错误

clang++ 和 g++ 都能正确处理这些合格的列表初始化程序。请参阅http://coliru.stacked-crooked.com/a/5d45e3645eec0476了解 g++ 演示正确行为。

于 2014-01-28T19:35:47.860 回答