为什么std :: span缺少size_type?

Lyb*_*rta 8 c++ c++20 std-span

我一直在更新使用homebrew span类的旧代码,使之更符合C ++ 20的要求,std::span并且由于std::span没有size_type和有,我遇到了编译错误index_type。关于是否index_type应该签名已经发生了巨大的变化,但是为什么要跳过size_type呢?这会破坏期望容器(或类似容器的对象)具有的通用代码size_type

Nev*_*vin 5

最初的提案P1022R0在被调用array_view时就有一个size_type成员。作为简化的一部分,它在第一版P1022R1中已被删除,因为它不需要,因为当时size()元素访问使用的是带符号的index_type(aka ptrdiff_t)。在Kona 2019会议上,该决定在P1227R2中被更改index_typesize_t

  • 他们确实将其更改为“size_t”?好极了!我坚决支持永远不应该签署尺寸。 (2认同)