# std::ranges::zip_transform_view<F,Views...>::iterator

From cppreference.com
< cpp‎ | ranges‎ | zip transform view

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.

### 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*)
`iterator_category` (conditionally present) | 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: std::input_iterator_tag, if std::invoke_result_t</*maybe-const*/<Const, F>&, ranges::range_reference_t</*maybe-const*/<Const, Views>>...> is not a reference. Otherwise, std::random_access_iterator_tag, if (std::derived_from</*POT*/, std::random_access_iterator_tag> && ...) is true. Otherwise, std::bidirectional_iterator_tag, if (std::derived_from</*POT*/, std::bidirectional_iterator_tag> && ...) is true. Otherwise, std::forward_iterator_tag, if (std::derived_from</*POT*/, std::forward_iterator_tag> && ...) is true. Otherwise, std::input_iterator_tag. Not present if /*Base*/ does not model `forward_range`.
`iterator_concept` | /*ziperator*/<Const>::iterator_concept
`value_type` | Let /*RREF*/ be ranges::range_reference_t<Views>..., and /*CRREF*/ be ranges::range_reference_t<const Views>.... Then: std::remove_cvref_t<std::invoke_result_t<F&, /*RREF*/>> if Const is false, std::remove_cvref_t<std::invoke_result_t<const F&, /*CRREF*/>> otherwise.
`difference_type` | range::range_difference_t</*Base*/>

### 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*)

### Member functions

(constructor) | constructs an iterator (public member function)
operator* | obtains the result of applying the invocable object to the underlying pointed-to elements (public member function)
operator[] | obtains the result of applying the invocable object to the underlying elements at given offset (public member function)
operator++operator++(int)operator--operator--(int)operator+=operator-= | advances or decrements the underlying iterator (public member function)

### Non-member functions

operator==operator<=> (C++23) | compares the underlying iterators (function)
operator+operator- (C++23) | performs iterator arithmetic on underlying iterators (function)

### Example

| This section is incomplete Reason: no example

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/ranges/zip_transform_view/iterator&oldid=173490"