template< bool Const >
class /*iterator*/
(since C++20)

The return type of join_view::begin, and of join_view::end when both the outer range V and the inner range ranges::range_reference_t<V> satisfy common_range and the parent join_view is a forward_range.

If V is not a simple view (e.g. if ranges::iterator_t<const V> is invalid or different from ranges::iterator_t<V>), Const is true for iterators returned from the const overloads, and false otherwise. If V is a simple view, Const is true if and only if ranges::range_reference_t<V> is a reference.

The name of this class template (shown here as /*iterator*/) is unspecified.

Member types

Member type Definition
Parent (private) const join_view<V> if Const is true, otherwise join_view<V>. The name is for exposition only.
Base (private) const V if Const is true, otherwise V. The name is for exposition only.
OuterIter (private) ranges::iterator_t<Base>. The name is for exposition only.
InnerIter (private) ranges::iterator_t<ranges::range_reference_t<Base>>. The name is for exposition only.
iterator_category Defined only if iterator::iterator_concept (see above) denotes std::forward_iterator_tag.

Let OUTERC be std::iterator_traits<ranges::iterator_t<Base>>::iterator_category, and let INNERC be std::iterator_traits<ranges::iterator_t<ranges::range_reference_t<Base>>>::iterator_category.

value_type ranges::range_value_t<ranges::range_reference_t<Base>>


Member objects

Member name Definition
outer_ (private) an object of type OuterIter. The name is for exposition only.
inner_ (private) an object of type InnerIter. The name is for exposition only.
parent_ (private) an object of type Parent. The name is for exposition only.

Member functions

constructs an iterator
(public member function)
accesses the element
(public member function)
advances or decrements the underlying iterators
(public member function)
skips over empty inner ranges; the name is for exposition only
(exposition-only member function)

Non-member functions

compares the underlying iterators
casts the result of dereferencing the underlying iterator to its associated rvalue reference type
swaps the objects pointed to by two underlying iterators

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.