假设我有一个类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
的代码有什么问题吗?
答案 0 :(得分:3)
您的代码没有任何问题。这是一个compiler bug。
clang ++和g ++都正确处理这些限定列表初始值设定项。有关演示正确行为的g ++,请参阅http://coliru.stacked-crooked.com/a/5d45e3645eec0476。