首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编译器的大括号初始化器列表与类型`std::initializer_list`的耦合有多紧密?

问编译器的大括号初始化器列表与类型`std::initializer_list`的耦合有多紧密?
EN

Stack Overflow用户
提问于 2012-01-07 02:14:14
回答 1查看 500关注 0票数 2

没有C++头<initializer_list>也能达到同样的效果吗?

class initializer_list必须驻留在namespace std中吗(编译器需要这样做吗)?

我对一个适用于五大巨头的解决方案没意见(GCC、MSVC、英特尔、Clang、Comeau)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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>对象被构造为引用该数组。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8762459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档