Esempio n. 1
0
            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
Esempio n. 2
0
 static auto bind(remove_fn remove, Value value)
 {
     return make_pipeable(
         std::bind(remove, std::placeholders::_1, std::move(value)));
 }