std::ranges::join_with_view<V,Pattern>::iterator

From cppreference.com
 
 
Ranges library
Range adaptors
 
 
template< bool Const >
class /*iterator*/
(exposition only*)

ranges::join_with_view<V, Pattern>::iterator is the type of the iterators returned by begin() and end() of ranges::join_with_view<V, Pattern>.

The state of an iterator of this class is managed as if there are two nested iterators:

  • an outer iterator into the parent range *parent_

This iterator class has the invariant that the inner iterator is always dereferenceable unless the outer iterator is not dereferenceable. When an iterator is constructed, incremented or decremented, its outer iterator might be adjusted to hold the invariant.

Template parameters

Const - whether the iterator is a constant iterator

Nested types

Exposition-only types
Type Definition
Parent maybe-const <Const, ranges::join_with_view<V, Pattern>>
(exposition-only member type*)
Base maybe-const <Const, V>
(exposition-only member type*)
InnerBase ranges::range_reference_t<Base >
(exposition-only member type*)
PatternBase maybe-const <Const, Pattern>
(exposition-only member type*)
OuterIter ranges::iterator_t<Base >
(exposition-only member type*)
InnerIter ranges::iterator_t<InnerBase >
(exposition-only member type*)
PatternIter ranges::iterator_t<PatternBase >
(exposition-only member type*)
Iterator property types
Type Definition
iterator_concept an iterator tag, see below
iterator_category
(conditionally present)
an iterator tag, see below
value_type

std::common_type_t<ranges::range_value_t<InnerBase >,
                   ranges::range_value_t<PatternBase >>

difference_type

std::common_type_t<ranges::range_difference_t<Base >,
                   ranges::range_difference_t<InnerBase >,
                   ranges::range_difference_t<PatternBase >>

Determining the iterator concept

iterator_concept is defined as follows:

Determining the iterator category

Given the following types:

iterator_category is defined if and only if std::is_reference_v<InnerBase > is true, and Base and InnerBase each model forward_range. In this case, it is defined as follows:

Data members

Member Description
Parent * parent_ the pointer to the parent join_with_view
(exposition-only member object*)
OuterIter outer_it_
(present only if Base models forward_range)
the outer iterator
(exposition-only member object*)
std::variant<PatternIter , InnerIter > inner_it_ the inner iterator
(exposition-only member object*)

Member functions

constructs an iterator
(public member function)
accesses the element
(public member function)
advances or decrements the underlying iterator
(public member function)

Non-member functions

compares the underlying iterators
(function)
(C++23)
casts the result of dereferencing the underlying iterator to its associated rvalue reference type
(function)
(C++23)
swaps the objects pointed to by two underlying iterators
(function)