Является ли текущая стандартная спецификация в конструкторе по умолчанию std :: span правильной для "Extent <= 0"? - PullRequest
2 голосов
/ 21 апреля 2019

По состоянию на 21 апреля 2019 г., 02:44:49 UTC, версия [span.cons] в https://eel.is/c++draft/, похоже, содержит ошибку:

constexpr span() noexcept;

Ограничения: Extent <= 0 - это true.
Гарантирует: 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 был подписан.

Это ошибка в стандарте? Я что-то пропустил?

1 Ответ

3 голосов
/ 21 апреля 2019

Это LWG3198 .Он обсуждался на этой неделе и должен быть официально установлен в августе.

...