像这样的代码:
#include <iostream>
#include <initializer_list>
#include <string>
struct A
{
A() { std::cout << "2" << std::endl; }
A(int a) { std::cout << "0" << std::endl; }
A(std::initializer_list<std::string> s) { std::cout << "3" << std::endl; }
A(std::initializer_list<int> l) { std::cout << "1" << std::endl; }
};
int main()
{
A a1{{}};
}
为什么称它为构造函数的std :: initializer_list规范?如果我们定义了带有std :: initializer_list的构造函数,它将生成模糊的编译错误。这种构造方式的规则是什么,为什么它对具有数字作为模板参数的std :: initializer_list如此特定?