std::ranges::join_view::iterator::iterator(3)

NAME
std::ranges::join_view::iterator::iterator - std::ranges::join_view::iterator::iterator

Synopsis
   /*iterator*/() requires std::default_initializable<OuterIter> && (1) (since
                        std::default_initializable<InnerIter> = default; C++20)
   constexpr /*iterator*/( Parent& parent, OuterIter outer ); (2) (since
                        C++20)
   constexpr /*iterator*/( /*iterator*/<!Const> i )
     requires Const && (3) (since
              std::convertible_to<ranges::iterator_t<V>, OuterIter> && C++20)
              std::convertible_to<ranges::iterator_t<InnerRng>, InnerIter>;
   Construct an iterator.
   1) Default constructor. Value-initializes the underlying iterators, and initializes
   the pointer to parent ranges::join_view with nullptr.
   2) Initializes the underlying outer_ iterator with std::move(outer), and the pointer
   to parent parent_ with std::addressof(parent); then calls satisfy().
   3) Conversion from /*iterator*/<false> to /*iterator*/<true>. Move constructs the
   underlying iterators outer_ with std::move(i.outer_), inner_ with
   std::move(i.inner_), and underlying pointer to parent parent_ with i.parent_.

Parameters
   parent - a (possibly const-qualified) ranges::join_view
   outer - an iterator into (possibly const-qualified) ranges::iterator_t<Base>
   i - an /*iterator*/<false>

Example
    This section is incomplete
    Reason: no example

Category:
     * Todo no example