This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of Resolved status.

### 3322. Add `join_view::base()` member function

Section: 24.7.12.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.

Proposed change:

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.

> 1. Modify 24.7.12.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_)};
>    >     }
>    >     […]

> 2. Modify 24.7.12.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.