diff options
Diffstat (limited to 'boost/range/adaptor/indirected.hpp')
-rw-r--r-- | boost/range/adaptor/indirected.hpp | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/boost/range/adaptor/indirected.hpp b/boost/range/adaptor/indirected.hpp index d7edc18f27..e741f17f5e 100644 --- a/boost/range/adaptor/indirected.hpp +++ b/boost/range/adaptor/indirected.hpp @@ -12,6 +12,7 @@ #define BOOST_RANGE_ADAPTOR_INDIRECTED_HPP #include <boost/range/iterator_range.hpp> +#include <boost/range/concepts.hpp> #include <boost/iterator/indirect_iterator.hpp> namespace boost @@ -42,18 +43,24 @@ namespace boost struct indirect_forwarder {}; - template< class InputRng > - inline indirected_range<InputRng> - operator|( InputRng& r, indirect_forwarder ) + template< class SinglePassRange > + inline indirected_range<SinglePassRange> + operator|( SinglePassRange& r, indirect_forwarder ) { - return indirected_range<InputRng>( r ); + BOOST_RANGE_CONCEPT_ASSERT(( + SinglePassRangeConcept<SinglePassRange>)); + + return indirected_range<SinglePassRange>( r ); } - template< class InputRng > - inline indirected_range<const InputRng> - operator|( const InputRng& r, indirect_forwarder ) + template< class SinglePassRange > + inline indirected_range<const SinglePassRange> + operator|( const SinglePassRange& r, indirect_forwarder ) { - return indirected_range<const InputRng>( r ); + BOOST_RANGE_CONCEPT_ASSERT(( + SinglePassRangeConcept<const SinglePassRange>)); + + return indirected_range<const SinglePassRange>( r ); } } // 'range_detail' @@ -68,18 +75,23 @@ namespace boost range_detail::indirect_forwarder(); } - template<class InputRange> - inline indirected_range<InputRange> - indirect(InputRange& rng) + template<class SinglePassRange> + inline indirected_range<SinglePassRange> + indirect(SinglePassRange& rng) { - return indirected_range<InputRange>(rng); + BOOST_RANGE_CONCEPT_ASSERT(( + SinglePassRangeConcept<SinglePassRange>)); + return indirected_range<SinglePassRange>(rng); } - template<class InputRange> - inline indirected_range<const InputRange> - indirect(const InputRange& rng) + template<class SinglePassRange> + inline indirected_range<const SinglePassRange> + indirect(const SinglePassRange& rng) { - return indirected_range<const InputRange>(rng); + BOOST_RANGE_CONCEPT_ASSERT(( + SinglePassRangeConcept<const SinglePassRange>)); + + return indirected_range<const SinglePassRange>(rng); } } // 'adaptors' |