c++ - std::span 默认构造函数的当前标准规范在 "Extent <= 0"上是否正确?

标签 c++ language-lawyer c++-standard-library c++20

截至 2019 年 4 月 21 日 02:44:49 UTC,[span.cons] 的版本上https://eel.is/c++draft/似乎包含一个错误:

constexpr span() noexcept;

Constraints: Extent <= 0 is true.
Ensures: size() == 0 && data() == nullptr.

Extent已调整为size_t类型, 和dynamic_extent现在是numeric_limits<size_t>::max() 。 因此,Extent <= 0本质上相当于Extent == 0 。 也就是说,当范围是动态时,构造函数被禁用, 这可能不是有意的。

我猜意图是Extent == 0 || Extent == dynamic_extent 因为这在 dynamic_extent 时有效已签署。

这是标准中的错误吗?我错过了什么吗?

最佳答案

这是LWG3198 。本周对此进行了讨论,预计八月份正式修复。

关于c++ - std::span 默认构造函数的当前标准规范在 "Extent <= 0"上是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55779467/

相关文章:

c++ - 将数据存储到 map

c++ - 在 x64 进程中调用 x86 winapi 函数

c++ - gcc 会根据条件优化我的循环吗?

c++ - DHCP over UDP 发送问题

c++ - 初始化阴影变量

c - C99 标准是否允许将变量分配给自身?

c++ - 这里有更多 C++ 中未定义的行为,很抱歉这个问题,但又是 UB

c++ - 在 std::pair 上使用 lambda 理解 std::find_if()

c++ - 在没有 std::index_sequence 的人工层的情况下就地解压 std::tuple

c++ - std::make_array 的目的是什么? C++20 中还需要它吗?