没有C++头<initializer_list>也能达到同样的效果吗?
class initializer_list必须驻留在namespace std中吗(编译器需要这样做吗)?
我对一个适用于五大巨头的解决方案没意见(GCC、MSVC、英特尔、Clang、Comeau)
发布于 2012-01-07 02:35:36
按照标准,它是紧密耦合的。它是编译器构造数组的包装器(尽管标准没有说明有多精确-- GCC使用带有指针和大小的构造函数,MSVC使用带有两个点的构造函数)。是的,它必须在名称空间std和头<initializer_list>中。
你必须看看他们在你想要支持的每个编译器中使用了什么构造函数,并将其复制到你的版本中,但是TBH,我看不出这一点。
模板
std::initializer_list不是prede<initializer_list>ned;如果在使用std::initializer_list之前没有包括头fi-即使是隐式使用,其中类型没有命名(7.1.6.4) -程序是错误的。
从初始化器列表构造std::initializer_list<E>类型的对象,就好像实现分配了一个由N个E类型的元素组成的数组一样,其中N是初始化器列表中的元素的数量。该数组的每个元素都使用初始化器列表的相应元素进行复制初始化,并且std::initializer_list<E>对象被构造为引用该数组。
https://stackoverflow.com/questions/8762459
复制相似问题