模板
std::initializer_list
未预定义;如果标题 <initializer_list> 在使用之前不包括在内std::initializer_list
——即使是类型未命名的隐式使用——程序是非良构的。
既然std::initializer_list
是编译器的特殊情况,为什么它不被视为语言的一流语法?
我对一些可能性及其反驳的看法:
命名空间污染
可以这样解决std::size_t
,包含标头仅引入标识符。
请注意,auto sz = sizeof(0);
即使不包含任何标题,它的格式也是正确的,而不是格式错误auto il = {1, 2, 3};
。
编译开销
libstdc++的实现std::initializer_list
实际上少于 50 行,不依赖于其他头文件。那会有多大的开销?