14#ifndef RANGES_V3_VIEW_DROP_WHILE_HPP
15#define RANGES_V3_VIEW_DROP_WHILE_HPP
30#include <range/v3/utility/static_const.hpp>
35#include <range/v3/detail/prologue.hpp>
41 template<
typename Rng,
typename Pred>
44 is_finite<Rng>::value ? finite : unknown>
48 RANGES_NO_UNIQUE_ADDRESS semiregular_box_t<Pred> pred_;
49 detail::non_propagating_cache<iterator_t<Rng>> begin_;
54 begin_ = find_if_not(rng_, std::ref(pred_));
61 : rng_(std::move(rng))
62 , pred_(std::move(pred))
70 return ranges::end(rng_);
80 template<
typename Rng,
typename Pred>
81 RANGES_INLINE_VAR
constexpr bool enable_borrowed_range<drop_while_view<Rng, Pred>> =
82 enable_borrowed_range<Rng>;
84#if RANGES_CXX_DEDUCTION_GUIDES >= RANGES_CXX_DEDUCTION_GUIDES_17
85 template(
typename Rng,
typename Fun)(
86 requires copy_constructible<Fun>)
91 template<
typename Rng,
typename Pred>
92 RANGES_INLINE_VAR
constexpr bool disable_sized_range<drop_while_view<Rng, Pred>> =
99 template(
typename Rng,
typename Pred)(
102 auto operator()(Rng && rng, Pred pred)
const
105 return {all(
static_cast<Rng &&
>(rng)), std::move(pred)};
107 template(
typename Rng,
typename Pred,
typename Proj)(
110 auto operator()(Rng && rng, Pred pred, Proj proj)
const
113 return {all(
static_cast<Rng &&
>(rng)),
114 compose(std::move(pred), std::move(proj))};
120 template<
typename Pred>
121 constexpr auto operator()(Pred pred)
const
123 return make_view_closure(
126 template(
typename Pred,
typename Proj)(
128 constexpr auto operator()(Pred && pred, Proj proj)
const
130 return make_view_closure(bind_back(
138 using drop_while_base_fn::operator();
139 using drop_while_bind_fn::operator();
151 using ranges::views::drop_while;
153 template(
typename Rng,
typename Pred)(
154 requires viewable_range<Rng> AND input_range<Rng> AND
155 indirect_unary_predicate<Pred, iterator_t<Rng>>)
161#include <range/v3/detail/epilogue.hpp>
162#include <range/v3/detail/satisfy_boost_range.hpp>
The indirect_unary_predicate concept.
The viewable_range concept.
decltype(begin(declval(Rng &))) iterator_t
Definition access.hpp:698
Definition compose.hpp:33
Definition drop_while.hpp:45
Definition interface.hpp:129
Definition drop_while.hpp:98
Definition drop_while.hpp:119
Definition drop_while.hpp:137