Mercurial > hg > vamp-build-and-test
comparison DEPENDENCIES/generic/include/boost/range/adaptor/indirected.hpp @ 101:c530137014c0
Update Boost headers (1.58.0)
author | Chris Cannam |
---|---|
date | Mon, 07 Sep 2015 11:12:49 +0100 |
parents | 2665513ce2d3 |
children |
comparison
equal
deleted
inserted
replaced
100:793467b5e61c | 101:c530137014c0 |
---|---|
10 | 10 |
11 #ifndef BOOST_RANGE_ADAPTOR_INDIRECTED_HPP | 11 #ifndef BOOST_RANGE_ADAPTOR_INDIRECTED_HPP |
12 #define BOOST_RANGE_ADAPTOR_INDIRECTED_HPP | 12 #define BOOST_RANGE_ADAPTOR_INDIRECTED_HPP |
13 | 13 |
14 #include <boost/range/iterator_range.hpp> | 14 #include <boost/range/iterator_range.hpp> |
15 #include <boost/range/concepts.hpp> | |
15 #include <boost/iterator/indirect_iterator.hpp> | 16 #include <boost/iterator/indirect_iterator.hpp> |
16 | 17 |
17 namespace boost | 18 namespace boost |
18 { | 19 { |
19 namespace range_detail | 20 namespace range_detail |
40 { } | 41 { } |
41 }; | 42 }; |
42 | 43 |
43 struct indirect_forwarder {}; | 44 struct indirect_forwarder {}; |
44 | 45 |
45 template< class InputRng > | 46 template< class SinglePassRange > |
46 inline indirected_range<InputRng> | 47 inline indirected_range<SinglePassRange> |
47 operator|( InputRng& r, indirect_forwarder ) | 48 operator|( SinglePassRange& r, indirect_forwarder ) |
48 { | 49 { |
49 return indirected_range<InputRng>( r ); | 50 BOOST_RANGE_CONCEPT_ASSERT(( |
51 SinglePassRangeConcept<SinglePassRange>)); | |
52 | |
53 return indirected_range<SinglePassRange>( r ); | |
50 } | 54 } |
51 | 55 |
52 template< class InputRng > | 56 template< class SinglePassRange > |
53 inline indirected_range<const InputRng> | 57 inline indirected_range<const SinglePassRange> |
54 operator|( const InputRng& r, indirect_forwarder ) | 58 operator|( const SinglePassRange& r, indirect_forwarder ) |
55 { | 59 { |
56 return indirected_range<const InputRng>( r ); | 60 BOOST_RANGE_CONCEPT_ASSERT(( |
61 SinglePassRangeConcept<const SinglePassRange>)); | |
62 | |
63 return indirected_range<const SinglePassRange>( r ); | |
57 } | 64 } |
58 | 65 |
59 } // 'range_detail' | 66 } // 'range_detail' |
60 | 67 |
61 using range_detail::indirected_range; | 68 using range_detail::indirected_range; |
66 { | 73 { |
67 const range_detail::indirect_forwarder indirected = | 74 const range_detail::indirect_forwarder indirected = |
68 range_detail::indirect_forwarder(); | 75 range_detail::indirect_forwarder(); |
69 } | 76 } |
70 | 77 |
71 template<class InputRange> | 78 template<class SinglePassRange> |
72 inline indirected_range<InputRange> | 79 inline indirected_range<SinglePassRange> |
73 indirect(InputRange& rng) | 80 indirect(SinglePassRange& rng) |
74 { | 81 { |
75 return indirected_range<InputRange>(rng); | 82 BOOST_RANGE_CONCEPT_ASSERT(( |
83 SinglePassRangeConcept<SinglePassRange>)); | |
84 return indirected_range<SinglePassRange>(rng); | |
76 } | 85 } |
77 | 86 |
78 template<class InputRange> | 87 template<class SinglePassRange> |
79 inline indirected_range<const InputRange> | 88 inline indirected_range<const SinglePassRange> |
80 indirect(const InputRange& rng) | 89 indirect(const SinglePassRange& rng) |
81 { | 90 { |
82 return indirected_range<const InputRange>(rng); | 91 BOOST_RANGE_CONCEPT_ASSERT(( |
92 SinglePassRangeConcept<const SinglePassRange>)); | |
93 | |
94 return indirected_range<const SinglePassRange>(rng); | |
83 } | 95 } |
84 } // 'adaptors' | 96 } // 'adaptors' |
85 | 97 |
86 } | 98 } |
87 | 99 |