#c #language-lawyer #c -standard-library #c 20
#c #язык-юрист #c -standard-library #c 20
Вопрос:
По состоянию на 21 апреля 2019 года, 02:44:49 UTC, версия [span.cons] на https://eel.is/c draft / кажется, содержит ошибку:
constexpr span() noexcept;
Ограничения:
Extent <= 0
естьtrue
.
Гарантирует:size() == 0 amp;amp; data() == nullptr
.
Extent
была скорректирована, чтобы иметь size_t
тип, и dynamic_extent
теперь numeric_limits<size_t>::max()
. Следовательно, Extent <= 0
по существу эквивалентно Extent == 0
. То есть конструктор отключается, когда экстент является динамическим, что, вероятно, не предназначено.
Я предполагаю, что цель заключается Extent == 0 || Extent == dynamic_extent
в том, чтобы это работало, когда dynamic_extent
было подписано.
Это ошибка в стандарте? Я что-то пропустил?
Ответ №1:
Это LWG3198. Это обсуждалось на этой неделе и должно быть официально исправлено в августе.