std::cspan 怎么了?

What happened to std::cspan?

std::span 已投票进入 C++20。我假设连同 std::span,会有一个像这样定义的方便别名:

template <class T, size_t Extent = dynamic_extent>
using cspan = span<const T, Extent>;

对我来说,这似乎是一个非常方便的别名。与 span 相比,我可能更经常使用 cspan!根据 cppreference, cspan doesn't exist. There's one mention of cspan in this paper,这似乎暗示它在某个时候属于标准。我找不到任何其他提及。

那么 cspan 怎么了?它被删除了吗?它曾经存在过吗?

的确,cspan不存在,也从未存在过。唯一的名称变化是 span 曾经拼写为 array_view

P1085R2中的引用:

|  3  |  Make span operate only on const T, (rename cspan, obviously :D)  |

是一个笑话,正如 :D 暗示的那样(请注意 C-SPAN 是一个广播联邦政府程序的有线网络)。实际提议是 span<T> 更改为像今天的 span<T const> 一样的行为(并且厚颜无耻地重命名为 cspan)。

就写span<T const>。它比 cspan<T> 长了整整 5 个字符,还有一个好处是更多人会知道 span 是什么。