join_view::base()
member functionSection: 25.7.14.2 [range.join.view] Status: Resolved Submitter: United States Opened: 2019-11-06 Last modified: 2020-11-09
Priority: 0
View all other issues in [range.join.view].
View all issues with Resolved status.
Discussion:
Addresses US 293
join_view
is missing a base()
member for returning the underlying view. All the other
range adaptors provide this.
To the join_view
class template add the member:
constexpr V base() const { return base_; }
Jonathan Wakely:
The NB comment says "join_view
is missing a base()
member for returning the
underlying view. All the other range adaptors provide this."
In fact, split_view
and istream_view
do not provide base()
either. Of the
views that do define base()
, all except all_view
do so out-of-line, so the proposed
resolution adds it out-of-line too.
[2019-11 Status to Ready during Wednesday night issue processing in Belfast.]
[2019-12-16; Casey comments]
This issue has been resolved by P1456R1 "Move-only views", which
added no less than two member functions named "base" to join_view
.
Previous resolution [SUPERSEDED]:
This wording is relative to N4835.
Modify 25.7.14.2 [range.join.view], class template
join_view
synopsis, as indicated:[…] template<input_range R> requires viewable_range<R> && constructible_from<V, all_view<R>> constexpr explicit join_view(R&& r); constexpr V base() const; constexpr auto begin() { return iterator<simple-view<V>>{*this, ranges::begin(base_)}; } […]Modify 25.7.14.2 [range.join.view] as indicated:
template<input_range R> requires viewable_range<R> && constructible_from<V, all_view<R>> constexpr explicit join_view(R&& r);-2- Effects: […]
constexpr V base() const;-?- Effects: Equivalent to:
return base_;
[2020-11-09 Resolved for C++20. Status changed: Tentatively Resolved → Resolved.]
Proposed resolution:
Resolved by accepting P1456R1.