< cpp‎ | ranges‎ | join view
Ranges library
Range access
Range conversions

Range primitives

Dangling iterator handling
Range concepts

Range factories
Range adaptors
Range generators
Range adaptor objects
Range adaptor closure objects
Helper items
(until C++23)(C++23)

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

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.


[edit] Member types

Member type Definition
Parent const join_view<V> if Const is true, otherwise join_view<V>
(exposition-only member type*)
Base const V if Const is true, otherwise V
(exposition-only member type*)
OuterIter ranges::iterator_t<Base>
(exposition-only member type*)
InnerIter ranges::iterator_t<ranges::range_reference_t<Base>>
(exposition-only member type*)
(conditionally present)
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>>>::

value_type ranges::range_value_t<ranges::range_reference_t<Base>>
difference_type std::common_type_t<ranges::range_difference_t<Base>,

[edit] Member objects

Member name Definition
outer_ (private) An object of type OuterIter
(exposition-only member object*)
inner_ (private) An object of type InnerIter
(exposition-only member object*)
parent_ (private) An object of type Parent
(exposition-only member object*)

[edit] 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
(exposition-only member function*)

[edit] 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