std::initializer_list
不是内置的核心语言?在我看来,它是 C + + 11的一个非常重要的特性,但是它没有自己的保留关键字(或类似的东西)。
取而代之的是 initializer_list
,它是来自标准库的模板类 只是,它具有来自编译器处理的新 括号初始化列表 {...}
语法的特殊隐式 测绘。
乍一看,这个解决方案相当 很古怪。
这是不是 C + + 语言的新增功能现在实现的方式: 通过某些模板类的 隐性角色而不是 Core语言?
请考虑以下例子:
widget<int> w = {1,2,3}; //this is how we want to use a class
为什么选择了一个新的班级:
widget( std::initializer_list<T> init )
而不是使用 相似的任何想法:
widget( T[] init, int length ) // (1)
widget( T... init ) // (2)
widget( std::vector<T> init ) // (3)
const
const
和 &
它们都已经成为语言的一部分。我只写了我的3个第一个想法,我肯定有 很多的其他方法。