24template <
typename Range>
27 return detail::enumerator<Range>{range};
44template <
typename Range,
typename UnaryPredicate>
45auto filter(Range& range, UnaryPredicate predicate) -> detail::filterer<Range, UnaryPredicate>
47 return detail::filterer<Range, UnaryPredicate>{range, predicate};
63template <
typename Range>
66 return detail::reverser<Range>{range};
80template <
typename... Ranges>
81auto zip(Ranges&&... t)
83 return detail::zipper<Ranges...>{std::forward<Ranges>(t)...};
Definition algorithm.hpp:12
auto filter(Range &range, UnaryPredicate predicate) -> detail::filterer< Range, UnaryPredicate >
Filter a range.
Definition ranges.hpp:45
auto reverse(Range &range)
Create a reverse iterator from a range.
Definition ranges.hpp:64
auto zip(Ranges &&... t)
A zip iterator adapter.
Definition ranges.hpp:81
auto enumerate(Range &range)
Enumerate a range.
Definition ranges.hpp:25