我对设计有一些疑问std::initializer_list.我在[support.initlist]中找不到答案.
为什么它有一个显式定义的默认构造函数?
为什么这个构造函数不是constexpr?
为什么方法size()不是constexpr?
为什么没有特质给出大小initializer_list(如专精std::tuple_size)?
为什么不可能静态访问其元素(如专业化std::get)?
sizeof适用于什么时会发生什么initializer_list?
来自 C++ 标准第 18.9 节:
\n\n\n\n\n类型initializer_list 的对象提供对const E 类型的对象数组的访问。 [ 注意:一对指针或一个指针加上\na 长度将是initializer_list 的明显表示。\ninitializer_list 用于实现初始化列表,如下所示8.5.4 中指定。复制初始值设定项列表不会复制底层\n 元素。\xe2\x80\x94 尾注]
\n
我认为大多数这些事情的原因是 std::initializer_list 实际上并不是一个容器。它没有值语义,它有指针语义。引用的最后一部分很明显:复制初始值设定项列表不会复制底层元素。鉴于它们只是为了初始化事物的目的,我认为您没有获得更强大的容器(例如元组)的所有优点并不奇怪。
\n| 归档时间: |
|
| 查看次数: |
305 次 |
| 最近记录: |