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