std::ranges::join_with_view<V,Pattern>::iterator<Const>::iterator
Начиная с ru.cppreference.net
/*iterator*/() = default;
|
(1) | (начиная с C++23) |
constexpr /*iterator*/( /*iterator*/<!Const> i )
requires Const &&
std::convertible_to<ranges::iterator_t<V>, /*OuterIter*/> &&
std::convertible_to<ranges::iterator_t</*InnerRng*/>,
/*InnerIter*/> &&
std::convertible_to<ranges::iterator_t<Pattern>, /*PatternIter*/>;
|
(2) | (начиная с C++23) |
constexpr /*iterator*/( /*Parent*/& parent, /*OuterIter*/ outer )
requires std::forward_range</*Base*/>;
|
(3) | (начиная с C++23) (только для пояснения*) |
constexpr explicit /*iterator*/( /*Parent*/ parent )
requires (!std::forward_range</*Base*/>);
|
(4) | (начиная с C++23) (только для пояснения*) |
Конструирование итератора. Перегрузки (3,4) вызываются begin() и end() из ranges::join_with_view.
| Перегрузка | Элементы данных | ||
|---|---|---|---|
parent_
|
outer_it_
|
inner_it_
| |
| (1) | инициализируется с помощью nullptr
|
value-инициализации (только если Base моделирует forward_range)
|
инициализации по умолчанию |
| (2) | инициализируется с помощью i.parent_
|
инициализируется с помощью std::move(i.outer_it_ (только если Base моделирует forward_range)
| |
| (3) | инициализируется с помощьюstd::addressof(parent)
|
инициализируется с помощью std::move(outer)
| |
| (4) | Н/П | ||
2) После инициализации элементов данных эквивалентно
if (i.inner_it_ .index() == 0)
inner_it_ .template emplace<0>(std::get<0>(std::move(i.inner_it_ )));
else
inner_it_ .template emplace<1>(std::get<1>(std::move(i.inner_it_ )));
.
3,4) После инициализации элементов данных настроить внешний итератор так, как если бы внутренний итератор был инкрементирован на
operator++().Параметры
| i | - | изменяемый итератор |
| parent | - | объект std::ranges::join_with_view |
| outer | - | итератор базового диапазона parent |
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |