| 1 | #ifndef BOOST_RANGE_VIEW_HPP_INCLUDED_
|
|---|
| 2 | #define BOOST_RANGE_VIEW_HPP_INCLUDED_
|
|---|
| 3 |
|
|---|
| 4 | #include <boost/iterator/transform_iterator.hpp>
|
|---|
| 5 | #include <boost/range/iterator_range.hpp>
|
|---|
| 6 | #include <boost/range/begin.hpp>
|
|---|
| 7 | #include <boost/range/end.hpp>
|
|---|
| 8 | #include <boost/range/iterator.hpp>
|
|---|
| 9 |
|
|---|
| 10 | namespace boost {
|
|---|
| 11 |
|
|---|
| 12 | template< typename IteratorT, typename FunT >
|
|---|
| 13 | inline iterator_range<
|
|---|
| 14 | transform_iterator< FunT, IteratorT >
|
|---|
| 15 | > make_view(IteratorT const& begin, IteratorT const& end, FunT const& fun)
|
|---|
| 16 | {
|
|---|
| 17 | return make_iterator_range(
|
|---|
| 18 | make_transform_iterator(begin, fun),
|
|---|
| 19 | make_transform_iterator(end, fun));
|
|---|
| 20 | }
|
|---|
| 21 |
|
|---|
| 22 | template< typename RangeT, typename FunT >
|
|---|
| 23 | inline iterator_range<
|
|---|
| 24 | transform_iterator<
|
|---|
| 25 | FunT,
|
|---|
| 26 | typename range_iterator< const RangeT >::type
|
|---|
| 27 | >
|
|---|
| 28 | > make_view(RangeT const& range, FunT const& fun)
|
|---|
| 29 | {
|
|---|
| 30 | return make_view(begin(range), end(range), fun);
|
|---|
| 31 | }
|
|---|
| 32 |
|
|---|
| 33 | } // namespace boost
|
|---|
| 34 |
|
|---|
| 35 | #endif // BOOST_RANGE_VIEW_HPP_INCLUDED_
|
|---|