Namespaces
Variants

std::ranges::adjacent_transform_view<V,F,N>:: iterator <Const>:: iterator

From cppreference.net
Ranges library
Range adaptors
/*iterator*/ ( ) = default ;
(1) (начиная с C++23)
constexpr /*iterator*/ ( /*iterator*/ < ! Const > i )

требует Const &&

std:: convertible_to < /*inner-iterator*/ < false > , /*inner-iterator*/ < Const >> ;
(2) (начиная с C++23)
private :
constexpr /*iterator*/ ( Parent & parent, /*inner-iterator*/ < Const > inner ) ;
(3) ( только для демонстрации* )

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

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

Параметры

i - an /*iterator*/ < false >
parent - an owning object of type adjacent_transform_view
inner - an iterator of type adjacent_transform_view:: inner_iterator

Пример