summaryrefslogtreecommitdiff
path: root/boost/range/adaptor/indirected.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/range/adaptor/indirected.hpp')
-rw-r--r--boost/range/adaptor/indirected.hpp44
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'