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++23)
(exposition only*)

The iterator type of a possibly const-qualified zip_transform_view, returned by zip_transform_view::begin and in certain cases by zip_transform_view::end.

The type /*iterator*/<true> or /*iterator*/<false> treats the underlying views as const-qualified or non-const-qualified respectively.


[edit] Member types

Member type Definition
Parent (private) zip_transform_view if Const is false, const zip_transform_view otherwise.
(exposition-only member type*)
Base (private) InnerView if Const is false, const InnerView otherwise.
(exposition-only member type*)

Let /*maybe-const*/<Const, F>& denote const F& if Const is true, F& otherwise.
Let /*maybe-const*/<Const, Views> denote const Views if Const is true, Views otherwise.

Let /*POT*/ denote the pack of types std::iterator_traits<std::iterator_t<
    /*maybe-const*/<Const, Views>>>::iterator_category...

If /*Base*/ models forward_range, then iterator_category denotes:

is not a reference.
  • Otherwise,
(std::derived_from</*POT*/, std::random_access_iterator_tag> && ...) is true.
(std::derived_from</*POT*/, std::bidirectional_iterator_tag> && ...) is true.
(std::derived_from</*POT*/, std::forward_iterator_tag> && ...) is true.

Not present if /*Base*/ does not model forward_range.

iterator_concept /*ziperator*/<Const>::iterator_concept

Let /*RREF*/ be ranges::range_reference_t<Views>...,
and /*CRREF*/ be ranges::range_reference_t<const Views>.... Then:

difference_type range::range_difference_t</*Base*/>

[edit] Data members

Member object Definition
parent_ (private) A pointer Parent* to the parent object
(exposition-only member object*)
inner_ (private) An iterator of type ziperator<Const>.
(exposition-only member type*)

[edit] Member functions

constructs an iterator
(public member function)
obtains the result of applying the invocable object to the underlying pointed-to elements
(public member function)
obtains the result of applying the invocable object to the underlying elements at given offset
(public member function)
advances or decrements the underlying iterator
(public member function) [edit]

[edit] Non-member functions

compares the underlying iterators
performs iterator arithmetic on underlying iterators

[edit] Example