为什么std::initializer_list<T>::iterator定义为裸指针T const*而不是random_access_iterator概念?
原因可能来自标准的这个小小的位
第18.9节
类型为initializer_list的对象提供对const E类型对象数组的访问.[注意:一对指针或指针加上一个长度将是initializer_list的明显表示.initializer_list用于实现8.5.4中指定的初始化列表.复制初始化列表不会复制基础元素. - 尾注]
这表明复制时的initializer_lists将具有指针语义而不是值语义,这可能就是为什么它们的迭代器是直接指针而不包装成"random-access-iterator"类型的原因.
AFAIK这是唯一的标准" 容器 "(注意这里引用),具有指针语义而不是值语义.
| 归档时间: |
|
| 查看次数: |
189 次 |
| 最近记录: |