Ticket #1756: view.hpp

File view.hpp, 937 bytes (added by andysem@…, 15 years ago)

Sample implementation of the make_view function

Line 
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
10namespace boost {
11
12template< typename IteratorT, typename FunT >
13inline 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
22template< typename RangeT, typename FunT >
23inline 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_