考虑这段代码:
class Foo
{
public:
Foo(){cout<<"empty"<<endl;}
Foo(initializer_list<int>){cout<<"init_list"<<endl;}
};
int main()
{
Foo(); // empty
Foo{}; // empty
Foo({}); // init_list for c++14, empty for c++17
}
我想知道为什么它们在 C++14 和 C++17 之间的行为不同,以及如何在 C++17 中构造一个Foo
空initializer_list
的?