initializer_list迭代器定义的选择
choice of initializer_list iterator definition
为什么std::initializer_list<T>::iterator
被定义为裸指针T const*
而不是random_access_iterator
概念?
原因可能是来自标准的这个小tid位
第18.9节
initializer_list类型的对象提供对const E.类型的对象。[注意:一对指针或一个指针加长度将是initializer_list的明显表示。initializer_list用于实现指定的初始值设定项列表8.5.4。复制初始值设定项列表不会复制基础元素--尾注]
这表明initializer_lists在复制时将具有指针语义,而不是值语义,这可能就是为什么它们的迭代器是直接的指针,而不是包装成"随机访问迭代器"类型的原因。
AFAIK这是唯一一个标准的"容器"(注意这里的引号),具有指针语义而不是值语义。
相关文章:
- 是否可以在运行时调用用于选择要调用的用户定义文本的逻辑?
- 根据模板参数选择宏定义
- 如何在Maya中选择自定义网格组件后立即发布用户事件
- 如何根据定义的字符串类型在“std::cout”和“std::wcout”之间进行选择
- 如何在Qt中创建自定义颜色选择器
- 是否可以从定义的数字集中选择随机数
- 当您在C中定义一个值时,编译器如何选择数据类型
- 为什么选择我的自定义OP的CPU实现
- 用于选择第一个定义类型的模板表达式
- C 编译器可以在用户定义和编译器生成的复制构建器之间进行自由选择
- 使用用户定义的函数对循环/对称值执行Sqlite(C API)和查询(选择)
- 关于智能指针中取消引用和成员选择运算符的定义
- 如何通过自定义选择底层容器来创建树结构
- Qt:创建自定义 QTextCursor 选择
- 如何使Sublime Text自动选择自定义构建系统
- 自定义文本框:高亮显示和选择
- 自定义UI元素使用的智能指针选择
- c++链接器如何选择将类的哪个定义链接到可执行文件中
- initializer_list迭代器定义的选择
- 我可以使用 SFINAE 有选择地定义模板类中的成员变量吗?