end of chunk_view for input ranges can be constSection: 25.7.29.2 [range.chunk.view.input] Status: C++23 Submitter: Hewill Kang Opened: 2022-06-09 Last modified: 2023-11-22
Priority: Not Prioritized
View all other issues in [range.chunk.view.input].
View all issues with C++23 status.
Discussion:
The input range version of chunk_view's end is a very simple function that only returns
default_sentinel, and simple ends like this also appear in other range adaptors, such
as basic_istream_view, lazy_split_view::outer-iterator::value_type, and
chunk_view::outer-iterator::value_type.
chunk_view, their ends all are const-qualified,
which allows us to freely get default_sentinel through the end of these const
objects even though they may not themselves be ranges.
I think we should add const to this chunk_view's end as
I don't see any harm in doing this, and in some cases, it may have a certain value. Also, this makes it
consistent with basic_istream_view and the upcoming std::generator, which, like it, only
has a non-const begin.
[2022-06-21; Reflector poll]
Set status to Tentatively Ready after eight votes in favour during reflector poll.
[2022-07-15; LWG telecon: move to Ready]
[2022-07-25 Approved at July 2022 virtual plenary. Status changed: Ready → WP.]
Proposed resolution:
This wording is relative to N4910.
Modify 25.7.29.2 [range.chunk.view.input] as indicated:
[…]namespace std::ranges { […] template<view V> requires input_range<V> class chunk_view : public view_interface<chunk_view<V>> { V base_ = V(); // exposition only […] public: […] constexpr outer-iterator begin(); constexpr default_sentinel_t end() const noexcept; constexpr auto size() requires sized_range<V>; constexpr auto size() const requires sized_range<const V>; }; […] }constexpr default_sentinel_t end() const noexcept;-4- Returns:
default_sentinel.