3 // Copyright Neil Groves 2010. Use, modification and
4 // distribution is subject to the Boost Software License, Version
5 // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt)
8 // For more information, see http://www.boost.org/libs/range/
10 #ifndef BOOST_RANGE_ADAPTOR_TYPE_ERASED_HPP_INCLUDED
11 #define BOOST_RANGE_ADAPTOR_TYPE_ERASED_HPP_INCLUDED
13 #include <boost/range/reference.hpp>
14 #include <boost/range/value_type.hpp>
15 #include <boost/range/iterator_range_core.hpp>
16 #include <boost/range/any_range.hpp>
17 #include <boost/range/concepts.hpp>
24 class Value = use_default
25 , class Traversal = use_default
26 , class Reference = use_default
27 , class Difference = use_default
28 , class Buffer = use_default
42 typename any_range_type_generator<
50 operator|(SinglePassRange& rng,
59 BOOST_RANGE_CONCEPT_ASSERT((
60 SinglePassRangeConcept<SinglePassRange>));
62 typedef typename any_range_type_generator<
70 return range_type(boost::begin(rng), boost::end(rng));
81 typename any_range_type_generator<
89 operator|(const SinglePassRange& rng,
98 BOOST_RANGE_CONCEPT_ASSERT((
99 SinglePassRangeConcept<const SinglePassRange>));
101 typedef typename any_range_type_generator<
102 const SinglePassRange
109 return range_type(boost::begin(rng), boost::end(rng));
113 class SinglePassRange
120 typename any_range_type_generator<
128 type_erase(SinglePassRange& rng
138 BOOST_RANGE_CONCEPT_ASSERT((
139 SinglePassRangeConcept<SinglePassRange>));
141 typedef typename any_range_type_generator<
150 return range_type(boost::begin(rng), boost::end(rng));
154 class SinglePassRange
161 typename any_range_type_generator<
162 const SinglePassRange
169 type_erase(const SinglePassRange& rng
179 BOOST_RANGE_CONCEPT_ASSERT((
180 SinglePassRangeConcept<const SinglePassRange>));
182 typedef typename any_range_type_generator<
183 const SinglePassRange
191 return range_type(boost::begin(rng), boost::end(rng));
196 #endif // include guard