std::ranges::join_view<V>::iterator<Const>::iterator
From cppreference.com
 
 
 
 
 
 C++ 
 Feature test macros (C++20)
 Concepts library (C++20)
 Metaprogramming library (C++11)
 Ranges library (C++20)
 Filesystem library (C++17)
 Concurrency support library (C++11)
 Execution control library (C++26)
Ranges library 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
(C++23)(C++23)
  (C++26)(C++26)
(C++23)(C++23)
  (C++26)(C++26)
(C++26)(C++26)
  (C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
  (C++23)(C++23)
(C++23)
(C++23)(C++23)
(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
std::ranges::join_view 
 
join_view::iterator::iterator
/*iterator*/() requires std::default_initializable <OuterIter> &&
std::default_initializable <InnerIter> = default;
 (1) 
 (since C++20) 
std::default_initializable <InnerIter> = default;
constexpr /*iterator*/( Parent& parent, OuterIter outer );
 (2) 
 (since C++20) 
constexpr /*iterator*/( /*iterator*/<!Const> i )
 (3) 
 (since C++20) 
    requires Const &&
             std::convertible_to <ranges::iterator_t <V>, OuterIter> &&
Constructs 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) Converts /*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_.[edit] Parameters
 parent
 -
 a (possibly const-qualified) ranges::join_view 
 outer
 -
 an iterator into (possibly const-qualified) ranges::iterator_t <Base>
 i
 -
 an /*iterator*/<false>
[edit] Example
 This section is incomplete
Reason: no example
Reason: no example