我一直在将使用我的自制 span 类的旧代码更新为更符合 C++20 std::span
的代码,但我遇到了编译错误,因为 std::span
没有 size_type
而是有 index_type
。关于 index_type
是否应该签名的问题一直存在争议,但为什么要跳过 size_type
?这打破了期望容器(或类似容器的对象)具有 size_type
的通用代码。
最佳答案
原提案P1022R0 ,当它被称为 array_view
时,有一个 size_type
成员。它在第一次修订中被删除了 P1022R1作为简化的一部分,因为当时不需要 size()
和元素访问,使用带符号的 index_type
(又名 ptrdiff_t
)。在科纳 2019 年 session 上,该决定在 P1227R2 中发生了变化。通过将 index_type
更改为 size_t
。
关于c++ - 为什么 std::span 缺少 size_type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55209261/