Namespaces
Variants

std::ranges::join_view<V>:: iterator <Const>:: iterator

From cppreference.net
Ranges library
Range adaptors
/*итератор*/ ( ) требует std:: default_initializable < OuterIter > &&
std:: default_initializable < InnerIter > = default ;
(1) (начиная с C++20)
constexpr /*итератор*/ ( Parent & parent, OuterIter outer ) ;
(2) (начиная с C++20)
constexpr /*итератор*/ ( /*итератор*/ < ! Const > i )

требует Const &&
std:: convertible_to < ranges:: iterator_t < V > , OuterIter > &&

std:: convertible_to < ranges:: iterator_t < InnerRng > , InnerIter > ;
(3) (начиная с C++20)

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

1) Конструктор по умолчанию. Выполняет инициализацию значением базовых итераторов и инициализирует указатель на родительское представление ranges::join_view значением nullptr .
2) Инициализирует базовый outer_ итератор с помощью std :: move ( outer ) , и указатель на родительский parent_ с помощью std:: addressof ( parent ) ; затем вызывает satisfy() .
3) Преобразует /*iterator*/ < false > в /*iterator*/ < true > . Перемещающе конструирует базовые итераторы outer_ с помощью std :: move ( i. outer_ ) , inner_ с помощью std :: move ( i. inner_ ) , и базовый указатель на родительский объект parent_ с помощью i. parent_ .

Параметры

родительский - (возможно, квалифицированный как const) ranges::join_view
внешний - итератор в (возможно, квалифицированный как const) ranges:: iterator_t < Base >
i - /*итератор*/ < false >

Пример