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

问题描述 投票:2回答:1

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

constexpr span() noexcept;

制约因素:Extent <= 0true。 确保: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签署时这是有效的。

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

c++ language-lawyer c++-standard-library c++20
1个回答
3
投票

这是LWG3198。本周对此进行了讨论,并将于8月正式修复。

© www.soinside.com 2019 - 2024. All rights reserved.