ein*_*ica 85 c++ array-view cpp-core-guidelines guideline-support-library
在最近的几次会议演示中,我听说Bjarne Stroustrup和其他人提到了C++的新编码指南以及支持它们的一些类型.
具体来说,我记得一个例子,span<T>
而不是(T* p, int n)
作为一个函数的参数(在约32:00进入谈话时); 但我也记得使用的建议array_view<T>
.它们是两个替代方案但是相同的概念吗?或者我是否混淆了事情,他们实际上并没有那么相关?
我似乎无法找到任何关于它们应该是什么的权威定义.
Bja*_*rup 174
我们在与人交谈库工作组在标准委员会.他们希望array_view
他们试图进入标准只读.对于核心指南,我们需要一个读写的抽象.为避免(潜在)标准与指南支持库(GSL)之间发生冲突,我们将(读取和写入)重命名array_view
为span
:https://github.com/microsoft/gsl.
Gal*_*lik 42
在CppCoreGuidlines中将原始文件array_view
重命名为span
.
请参阅:https://github.com/isocpp/CppCoreGuidelines/pull/377
因此描述如下:
span是使用指针访问数组的边界检查,安全的替代方法
oli*_*bre 11
来自图书馆演变工作组(LEWG)的文件P0122R(2016-02-12 )正式将类型重命名为:
array_view
span
更新日志
从R0的变化
- 在Kona会议上将LEWG 提供的类型名称更改
array_view
为span
以下反馈.- [...]
我们还可以阅读:
对标准的影响
此提议是纯库扩展.它不需要对标准类,函数或标头进行任何更改.如果可能取决于P0257中
byte
提出的类型别名行为的类型和更改,它将得到增强.但是 - 如果采用 - 为这种新类型重载某些标准库函数可能很有用(例如
copy()
).
span
已经在标准C++(C++ 11)中实现,并且已成功用于C++代码的商业静态分析工具以及商业办公生产力软件.https://github.com/Microsoft/GSL上提供了一个开源的参考实现.
在下一章中,本文档介绍了只读和读写(可变)访问:
元素类型和转换
span
必须通过template参数配置其元素类型,模板参数ValueType
必须是不是抽象类类型的完整对象类型.span
支持对其封装的序列进行只读或可变访问.要访问只读数据,用户可以声明aspan<const T>
,并且访问可变数据将使用aspan<T>
.[...]
另见指南支持库评论:span<T>
来自Marius Bancila(2016年3月)定义span
为:
该准则支持库是微软实现的一些中所描述的类型和功能的C++核心原则 由维持标准C++基金会.GSL提供的类型
span<T>
之前称为array_view<T>
.
span<T>
是一个非拥有的连续内存范围,建议用于代替指针(和大小计数器)或标准容器(如std::vector
或std::array
).
归档时间: |
|
查看次数: |
23282 次 |
最近记录: |