Namespaces
Variants

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

С ru.cppreference.net
 
 
Библиотека диапазонов
Адаптеры диапазонов
 
 
/*iterator*/() = default;
(1) (начиная с 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) (начиная с 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) (только для пояснения*)

Создаёт итератор.

1) Конструктор по умолчанию. Инициализирует значением parent_ с помощью nullptr и инициализирует по умолчанию current_.
2) Преобразование из /*iterator*/<false> в /*iterator*/<true>. Инициализирует parent_ с помощью i.parent_ и current_ с помощью std::move(i.current_).
3) Закрытый конструктор, используемый cartesian_product_view::begin и cartesian_product_view::end. Этот конструктор недоступен пользователям. Инициализирует parent_ с помощью std::addressof(parent) и current_ с помощью std::move(current).

Параметры

i - an /*iterator*/ < false >

Пример