Ad *_*d N 8 c++ initializer-list c++11 c++14
在我的环境中,它std::initializer_list被实现为指向第一个元素的指针和一个大小.仍然在我的具体设置中,我能够观察到:
initializer_list从函数返回by值不会更改指针的值(导致数据不会与initializer_list一起复制的结论).如果副本可以比原始对象更长initializer_list,那么复制一个是不安全的.
从C++ 11标准,18.9 [support.initlist]:
2类型为initializer_list的对象提供对const E类型对象数组的访问.[注意:一对指针或指针加上一个长度将是initializer_list的明显表示.initializer_list用于实现8.5.4中指定的初始化列表.复制初始化列表不会复制基础元素. - 结束说明]
这就像是指向对象.您还可以使指针比对象更活跃.如果你想"安全地"做,请改为/存储元素向量.
复制元素会使它变得昂贵,因此没有人会使用它.可用的文档清楚地说明了它的作用.
编辑:
这是Stroustrup的建议initializer_list:N2100.阅读它可能会启发它的设计决策.
| 归档时间: |
|
| 查看次数: |
529 次 |
| 最近记录: |