take_while_view(Rng && rng, Pred pred) : range_adaptor_t<take_while_view>{std::forward<Rng>(rng)} , pred_(invokable(std::move(pred))) {} }; namespace view { struct take_while_fn { template<typename Rng, typename Pred, CONCEPT_REQUIRES_(Iterable<Rng>())> take_while_view<Rng, Pred> operator()(Rng && rng, Pred pred) const { return {std::forward<Rng>(rng), std::move(pred)}; } template<typename Pred> auto operator()(Pred pred) const RANGES_DECLTYPE_AUTO_RETURN ( make_pipeable(std::bind(*this, std::placeholders::_1, protect(std::move(pred)))) ) }; RANGES_CONSTEXPR take_while_fn take_while{}; } } } #endif
static auto bind(remove_fn remove, Value value) { return make_pipeable( std::bind(remove, std::placeholders::_1, std::move(value))); }