Namespaces
Variants

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

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

требует, чтобы Const &&

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

Построить часового.

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

Параметры

i - an /*sentinel*/ < false >
inner - a sentinel of type adjacent_transform_view:: inner_sentinel

Пример