split_view<V, P>::inner-iterator<true>::operator++(int)
should depend on Base
Section: 25.7.16.5 [range.lazy.split.inner] Status: C++23 Submitter: Casey Carter Opened: 2021-03-11 Last modified: 2023-11-22
Priority: Not Prioritized
View all other issues in [range.lazy.split.inner].
View all issues with C++23 status.
Discussion:
split_view<V, P>::inner-iterator<Const>::operator++(int)
is specified directly in the
synopsis in [range.split.inner] as:
constexpr decltype(auto) operator++(int) { if constexpr (forward_range<V>) { auto tmp = *this; ++*this; return tmp; } else ++*this; }
The dependency on the properties of V
here is odd given that we are wrapping an iterator obtained from a
maybe-const<Const, V>
(aka Base
). It seems like this function should instead
be concerned with forward_range<Base>
.
[2021-04-20; Reflector poll]
Set status to Tentatively Ready after five votes in favour during reflector poll.
[2021-06-07 Approved at June 2021 virtual plenary. Status changed: Voting → WP.]
Proposed resolution:
This wording is relative to N4878.
Modify [range.split.inner] as indicated:
constexpr decltype(auto) operator++(int) { if constexpr (forward_range<VBase>) { auto tmp = *this; ++*this; return tmp; } else ++*this; }