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_
|
---|