# std::ranges::join_view<V>::begin

From cppreference.com
< cpp‎ | ranges‎ | join view

constexpr auto begin(); | (1) | (since C++20)
constexpr auto begin() const requires ranges::input_range<const V> && std::is_reference_v<ranges::range_reference_t<const V>>; | (2) | (since C++20)

Returns an iterator to the first element of the `join_view`. Given `base_` is the underlying view,

1) Equivalent to

- return /*iterator*/<true>{*this, ranges::begin(base_)}; if /*simple-view*/<V> is satisfied and ranges::range_reference_t<V> is reference type. Otherwise,
- return /*iterator*/<false>{*this, ranges::begin(base_)};.

2) Equivalent to return /*iterator*/<true>{*this, ranges::begin(base_)};.

### Parameters

(none)

### Return value

Iterator to the first element.

### Notes

When ranges::range_reference_t<V> is not a reference type, that is, deferencing an iterator of `V` returns a prvalue temporary, the `join_view` is only an `input_range`, in which case only single-pass iteration is supported, and repeated calls to `begin()` may not give meaningful results.

### Example

| This section is incomplete Reason: no example

### See also

end | returns an iterator or a sentinel to the end (public member function)
ranges::begin (C++20) | returns an iterator to the beginning of a range (customization point object)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/ranges/join_view/begin&oldid=172580"