最近有人证明了C ++的可怕性(here):
cout << string(50, 'x'); // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
cout << string{50, 'x'}; // 2x
std :: string将第二行视为初始化列表。
我非常喜欢使用{}初始化语法,但是我要实现一个可以使用初始化列表初始化的类。
有没有办法编写以下语法:
Foo{x}; // initialise a Foo object with x
Foo{{x,y,z}}; // initialise a Foo object with initialiser list
Foo{{x}}; // initialise a Foo object with initialiser list with ONE item
答案 0 :(得分:0)
最后,我通过让我的类使用可变参数包而不是初始化列表来解决这个问题。
我还没有遇到一个例子,你不能以这种方式绕过初始化列表。