Namespaces
Variants

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

ja.cppreference.net より
 
 
Ranges ライブラリ
範囲アダプタ
 
 
/*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 >

例