std::ranges::cartesian_product_view<First, Vs...>::iterator<Const>::iterator

From cppreference.com
 
 
Ranges library
Range access
Range conversions
(C++23)
Range primitives



Dangling iterator handling
Range concepts
Views

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


 
 
/*iterator*/() = default;
(1) (since C++23)
constexpr /*iterator*/( /*iterator*/<!Const> i )

    requires Const && (
        std::convertible_to<ranges::iterator_t<First>, ranges::iterator_t<const First>>
        && ... &&
        std::convertible_to<ranges::iterator_t<Vs>, ranges::iterator_t<const Vs>>

    );
(2) (since C++23)
private:

constexpr /*iterator*/(
    /*Parent*/& parent,
    std::tuple<ranges::iterator_t</*maybe-const*/<Const, First>>,

               ranges::iterator_t</*maybe-const*/<Const, Vs>>...> current );
(3) (exposition only*)

Construct an iterator.

1) Default constructor. Value-initializes the parent_ with nullptr and default-initializes the current_.
2) Conversion from /*iterator*/<false> to /*iterator*/<true>. Initializes parent_ with i.parent_ and current_ with std::move(i.current_).
3) A private constructor which is used by cartesian_product_view::begin and cartesian_product_view::end. This constructor is not accessible to users. Initializes parent_ with std::addressof(parent) and current_ with std::move(current).

Parameters

i - an /*iterator*/<false>

Example