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

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 name of this class template (shown here as iterator) is unspecified.

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

Member types

Member type Definition
Parent (private) zip_transform_view if Const is false, const zip_transform_view otherwise. The name is for exposition only.
Base (private) InnerView if Const is false, const InnerView otherwise. The name is for exposition only.

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
/*maybe-const*/<Const, Views>>>::iterator_category...

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

std::invoke_result_t</*maybe-const*/<Const, F>&,
ranges::range_reference_t</*maybe-const*/<Const, Views>>...>

is not an lvalue reference.

(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*/>

Data members

Typical implementations of iterator hold two non-static data members:

These names are for exposition purposes only.

Member functions

constructs an iterator
(public member function)
obtains the result of applying the invocable object to the underlying poined-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 iterators
(public member function)

Non-member functions

compares the underlying iterators
performs iterator arithmetic on underlying iterators

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