1<?xml version="1.0" encoding="utf-8"?> 2<!-- 3 Copyright 2012 Eric Niebler 4 5 Distributed under the Boost 6 Software License, Version 1.0. (See accompanying 7 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 8 --> 9<header name="boost/proto/functional/std/iterator.hpp"> 10 <para>Includes Proto callables for the functions found in the standard <code><iterator> header</code>.</para> 11 12 <namespace name="boost"> 13 <namespace name="proto"> 14 <namespace name="functional"> 15 16 <!-- proto::functional::advance --> 17 <struct name="advance"> 18 <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the 19 <code>std::advance()</code> function on its arguments.</purpose> 20 <description> 21 <para> 22 A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the 23 <code>std::advance()</code> function on its arguments.</para> 24 </description> 25 <inherit> 26 <type><classname>proto::callable</classname></type> 27 </inherit> 28 <typedef name="result_type"> 29 <type>void</type> 30 </typedef> 31 <method-group name="public member functions"> 32 <method name="operator()" cv="const"> 33 <type>void</type> 34 <template> 35 <template-type-parameter name="InputIterator"/> 36 </template> 37 <template> 38 <template-type-parameter name="Distance"/> 39 </template> 40 <parameter name="x"> 41 <paramtype>InputIterator &</paramtype> 42 </parameter> 43 <parameter name="n"> 44 <paramtype>Distance</paramtype> 45 </parameter> 46 <description> 47 <para>Calls <code>std::advance(x, n)</code></para> 48 </description> 49 </method> 50 </method-group> 51 </struct> 52 53 <!-- proto::functional::distance --> 54 <struct name="distance"> 55 <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the 56 <code>std::distance()</code> function on its arguments.</purpose> 57 <description> 58 <para> 59 A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the 60 <code>std::distance()</code> function on its arguments.</para> 61 </description> 62 <inherit> 63 <type><classname>proto::callable</classname></type> 64 </inherit> 65 <struct-specialization name="result"> 66 <template> 67 <template-type-parameter name="This"/> 68 <template-type-parameter name="InputIterator"/> 69 </template> 70 <specialization> 71 <template-arg>This(InputIterator, InputIterator)</template-arg> 72 </specialization> 73 <typedef name="type"> 74 <type>typename std::iterator_traits< 75 typename boost::remove_const< 76 typename boost::remove_reference<InputIterator>::type 77 >::type 78 >::difference_type</type> 79 </typedef> 80 </struct-specialization> 81 <method-group name="public member functions"> 82 <method name="operator()" cv="const"> 83 <type>void</type> 84 <template> 85 <template-type-parameter name="InputIterator"/> 86 </template> 87 <parameter name="first"> 88 <paramtype>InputIterator</paramtype> 89 </parameter> 90 <parameter name="last"> 91 <paramtype>InputIterator</paramtype> 92 </parameter> 93 <returns> 94 <para><code>std::distance(first, last)</code></para> 95 </returns> 96 </method> 97 </method-group> 98 </struct> 99 100 <!-- proto::functional::next --> 101 <struct name="next"> 102 <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the 103 <code>std::next()</code> function on its arguments.</purpose> 104 <description> 105 <para> 106 A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the 107 <code>std::next()</code> function on its arguments.</para> 108 </description> 109 <inherit> 110 <type><classname>proto::callable</classname></type> 111 </inherit> 112 <struct-specialization name="result"> 113 <template> 114 <template-type-parameter name="This"/> 115 <template-type-parameter name="ForwardIterator"/> 116 </template> 117 <specialization> 118 <template-arg>This(ForwardIterator)</template-arg> 119 </specialization> 120 <typedef name="type"> 121 <type>typename boost::remove_const< 122 typename boost::remove_reference<ForwardIterator>::type 123 >::type</type> 124 </typedef> 125 </struct-specialization> 126 <struct-specialization name="result"> 127 <template> 128 <template-type-parameter name="This"/> 129 <template-type-parameter name="ForwardIterator"/> 130 <template-type-parameter name="Distance"/> 131 </template> 132 <specialization> 133 <template-arg>This(ForwardIterator, Distance)</template-arg> 134 </specialization> 135 <typedef name="type"> 136 <type>typename boost::remove_const< 137 typename boost::remove_reference<ForwardIterator>::type 138 >::type</type> 139 </typedef> 140 </struct-specialization> 141 <method-group name="public member functions"> 142 <method name="operator()" cv="const"> 143 <type>void</type> 144 <template> 145 <template-type-parameter name="ForwardIterator"/> 146 </template> 147 <parameter name="x"> 148 <paramtype>ForwardIterator</paramtype> 149 </parameter> 150 <returns> 151 <para><code>std::next(x)</code></para> 152 </returns> 153 </method> 154 <method name="operator()" cv="const"> 155 <type>void</type> 156 <template> 157 <template-type-parameter name="ForwardIterator"/> 158 </template> 159 <parameter name="x"> 160 <paramtype>ForwardIterator</paramtype> 161 </parameter> 162 <parameter name="n"> 163 <paramtype>typename std::iterator_traits<ForwardIterator>::difference_type</paramtype> 164 </parameter> 165 <returns> 166 <para><code>std::next(x, n)</code></para> 167 </returns> 168 </method> 169 </method-group> 170 </struct> 171 172 <!-- proto::functional::prior --> 173 <struct name="prior"> 174 <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the 175 <code>std::prior()</code> function on its arguments.</purpose> 176 <description> 177 <para> 178 A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the 179 <code>std::prior()</code> function on its arguments.</para> 180 </description> 181 <inherit> 182 <type><classname>proto::callable</classname></type> 183 </inherit> 184 <struct-specialization name="result"> 185 <template> 186 <template-type-parameter name="This"/> 187 <template-type-parameter name="BidirectionalIterator"/> 188 </template> 189 <specialization> 190 <template-arg>This(BidirectionalIterator)</template-arg> 191 </specialization> 192 <typedef name="type"> 193 <type>typename boost::remove_const< 194 typename boost::remove_reference<BidirectionalIterator>::type 195 >::type</type> 196 </typedef> 197 </struct-specialization> 198 <struct-specialization name="result"> 199 <template> 200 <template-type-parameter name="This"/> 201 <template-type-parameter name="BidirectionalIterator"/> 202 <template-type-parameter name="Distance"/> 203 </template> 204 <specialization> 205 <template-arg>This(BidirectionalIterator, Distance)</template-arg> 206 </specialization> 207 <typedef name="type"> 208 <type>typename boost::remove_const< 209 typename boost::remove_reference<BidirectionalIterator>::type 210 >::type</type> 211 </typedef> 212 </struct-specialization> 213 <method-group name="public member functions"> 214 <method name="operator()" cv="const"> 215 <type>void</type> 216 <template> 217 <template-type-parameter name="BidirectionalIterator"/> 218 </template> 219 <parameter name="x"> 220 <paramtype>BidirectionalIterator</paramtype> 221 </parameter> 222 <returns> 223 <para><code>std::prior(x)</code></para> 224 </returns> 225 </method> 226 <method name="operator()" cv="const"> 227 <type>void</type> 228 <template> 229 <template-type-parameter name="BidirectionalIterator"/> 230 </template> 231 <parameter name="x"> 232 <paramtype>BidirectionalIterator</paramtype> 233 </parameter> 234 <parameter name="n"> 235 <paramtype>typename std::iterator_traits<BidirectionalIterator>::difference_type</paramtype> 236 </parameter> 237 <returns> 238 <para><code>std::prior(x, n)</code></para> 239 </returns> 240 </method> 241 </method-group> 242 </struct> 243 244 </namespace> 245 </namespace> 246 </namespace> 247</header> 248