Created on 2018-04-12.00:00:00 last changed 45 months ago
Proposed resolution:
This wording is relative to N4741.
Edit [span.cons] as indicated:
constexpr span() noexcept;-2- Postconditions: size() == 0 && data() == nullptr. -3- Remarks: This constructor shall not participate in overload resolution unless Extent <= 0 is true.
-1- Effects: Constructs an empty span.constexpr span(pointer ptr, index_type count);-4- Requires: [ptr, ptr + count) shall be a valid range. If extent is not equal to dynamic_extent, then count shall be equal to extent.
-5- Effects: Constructs a span that is a view over the range [ptr, ptr + count).If count is 0 then an empty span is constructed.-6- Postconditions: size() == count && data() == ptr. -?- Throws: Nothing.constexpr span(pointer first, pointer last);-7- Requires: [first, last) shall be a valid range. If extent is not equal to dynamic_extent, then last - first shall be equal to extent.
-8- Effects: Constructs a span that is a view over the range [first, last).If last - first == 0 then an empty span is constructed.-9- Postconditions: size() == last - first && data() == first. -10- Throws: Nothing.
[ 2018-06 Rapperswil: Adopted ]
[ 2018-04-24 Moved to Tentatively Ready after 6 positive votes on c++std-lib. ]
The span constructors have wording relics that mention an "empty span". It's unnecessary (the behavior is fully specified by the postconditions), but I left it there because I thought it was harmless. It was later pointed out to me that this is actually confusing. Talking about an "empty span" implies that there's just one such thing, but span permits empty() to be true while data() can vary (being null or non-null). (This behavior is very useful; consider how equal_range() behaves.)
To avoid confusion, the "empty span" wording should simply be removed, leaving the constructor behavior unchanged. Editorially, there's also a missing paragraph number.History | |||
---|---|---|---|
Date | User | Action | Args |
2021-02-25 10:48:01 | admin | set | status: wp -> c++20 |
2018-06-12 01:05:16 | admin | set | messages: + msg9891 |
2018-06-12 01:05:16 | admin | set | status: voting -> wp |
2018-05-06 19:23:13 | admin | set | status: ready -> voting |
2018-05-05 12:14:09 | admin | set | messages: + msg9832 |
2018-05-05 12:14:09 | admin | set | status: new -> ready |
2018-04-22 14:31:19 | admin | set | messages: + msg9819 |
2018-04-12 00:00:00 | admin | create |