42 is_finite<Rng>::value ? finite : range_cardinality<Rng>::value>
43 ,
private box<semiregular_box_t<Pred>, adjacent_remove_if_view<Rng, Pred>>
47 : adjacent_remove_if_view::view_adaptor{detail::move(rng)}
48 , adjacent_remove_if_view::box(detail::move(pred))
70 RANGES_ASSERT(it != ranges::end(rng_->base()));
71 rng_->satisfy_forward(++it);
78 rng_->satisfy_reverse(it);
80 void advance() =
delete;
81 void distance_to() =
delete;
83 constexpr adaptor begin_adaptor()
89 constexpr auto end_adaptor()
98 constexpr auto end_adaptor()
noexcept
107 auto const last = ranges::end(this->base());
110 auto & pred = this->adjacent_remove_if_view::box::get();
111 for(
auto nxt = it; ++nxt != last && invoke(pred, *it, *nxt); it = nxt)
116 auto const & first = *begin_;
117 RANGES_ASSERT(it != first);
121 if(prv == ranges::end(this->base()))
125 auto & pred = this->adjacent_remove_if_view::box::get();
126 for(; invoke(pred, *it, *prv); prv = it, --it)
127 RANGES_ASSERT(it != first);
134 auto it = ranges::begin(this->base());
136 begin_.emplace(std::move(it));
139 detail::non_propagating_cache<iterator_t<Rng>> begin_;