• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<?xml version="1.0" standalone="yes"?>
2<library-reference id="headers"><title>Headers</title><header name="boost/stl_interfaces/fwd.hpp">
3<namespace name="boost">
4<namespace name="stl_interfaces">
5<namespace name="v1">
6<namespace name="v1_dtl">
7<struct name="decrementable_sentinel"><template>
8      <template-type-parameter name="Range"/>
9      <template-type-parameter name=""><default>void</default></template-type-parameter>
10    </template><inherit access="public">false_type</inherit></struct><struct-specialization name="decrementable_sentinel"><template>
11      <template-type-parameter name="Range"/>
12    </template><specialization><template-arg>Range</template-arg><template-arg>void_t&lt; decltype(--std::declval&lt; sentinel_t&lt; Range &gt; &amp; &gt;())&gt;</template-arg></specialization><inherit access="public">true_type</inherit></struct-specialization><struct name="iterator"><template>
13      <template-type-parameter name="Range"/>
14      <template-type-parameter name=""><default>void</default></template-type-parameter>
15    </template></struct><struct-specialization name="iterator"><template>
16      <template-type-parameter name="Range"/>
17    </template><specialization><template-arg>Range</template-arg><template-arg>void_t&lt; decltype(std::declval&lt; Range &amp; &gt;().begin())&gt;</template-arg></specialization><typedef name="type"><type>decltype(std::declval&lt; Range &amp; &gt;().begin())</type></typedef>
18</struct-specialization><struct name="sentinel"><template>
19      <template-type-parameter name="Range"/>
20      <template-type-parameter name=""><default>void</default></template-type-parameter>
21    </template></struct><struct-specialization name="sentinel"><template>
22      <template-type-parameter name="Range"/>
23    </template><specialization><template-arg>Range</template-arg><template-arg>void_t&lt; decltype(std::declval&lt; Range &amp; &gt;().end())&gt;</template-arg></specialization><typedef name="type"><type>decltype(std::declval&lt; Range &amp; &gt;().end())</type></typedef>
24</struct-specialization><typedef name="void_t"><type>void</type></typedef>
25<typedef name="iter_difference_t"><type>typename std::iterator_traits&lt; Iter &gt;::difference_type</type></typedef>
26<typedef name="iterator_t"><type>typename <classname>iterator</classname>&lt; Range &gt;::type</type></typedef>
27<typedef name="sentinel_t"><type>typename <classname>sentinel</classname>&lt; Range &gt;::type</type></typedef>
28<typedef name="range_difference_t"><type>iter_difference_t&lt; iterator_t&lt; Range &gt; &gt;</type></typedef>
29<typedef name="common_range"><type>std::is_same&lt; iterator_t&lt; Range &gt;, sentinel_t&lt; Range &gt; &gt;</type></typedef>
30
31
32
33
34
35
36
37
38</namespace>
39<enum name="element_layout"><enumvalue name="discontiguous"><default>= false</default></enumvalue><enumvalue name="contiguous"><default>= true</default></enumvalue><description><para>An enumeration used to indicate whether the underlying data have a contiguous or discontiguous layout when instantiating <computeroutput><classname alt="boost::stl_interfaces::v1::view_interface">view_interface</classname></computeroutput> and <computeroutput><classname alt="boost::stl_interfaces::v1::sequence_container_interface">sequence_container_interface</classname></computeroutput>. </para></description></enum>
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57</namespace>
58</namespace>
59</namespace>
60</header>
61<header name="boost/stl_interfaces/iterator_interface.hpp">
62<namespace name="boost">
63<namespace name="stl_interfaces">
64<struct name="access"><description><para>A type for granting access to the private members of an iterator derived from <computeroutput>iterator_interface</computeroutput>. </para></description></struct><struct name="proxy_arrow_result"><template>
65      <template-type-parameter name="T"/>
66    </template><description><para>The return type of <computeroutput>operator-&gt;()</computeroutput> in a proxy iterator.</para><para>This template is used as the default <computeroutput>Pointer</computeroutput> template parameter in the <computeroutput>proxy_iterator_interface</computeroutput> template alias. Note that the use of this template implies a copy or move of the underlying object of type <computeroutput>T</computeroutput>. </para></description><method-group name="public member functions">
67<method name="operator-&gt;" cv="const noexcept"><type>constexpr T const  *</type></method>
68<method name="operator-&gt;" cv="noexcept"><type>constexpr T *</type></method>
69</method-group>
70<constructor cv="noexcept(noexcept(T(value))))"><parameter name="value"><paramtype>T const &amp;</paramtype></parameter></constructor>
71<constructor cv="noexcept(noexcept(T(std::move(value)))))"><parameter name="value"><paramtype>T &amp;&amp;</paramtype></parameter></constructor>
72</struct><namespace name="v1">
73<struct name="iterator_interface"><template>
74      <template-type-parameter name="Derived"/>
75      <template-type-parameter name="IteratorConcept"/>
76      <template-type-parameter name="ValueType"/>
77      <template-type-parameter name="Reference"/>
78      <template-type-parameter name="Pointer"/>
79      <template-type-parameter name="DifferenceType"/>
80    </template><description><para>A CRTP template that one may derive from to make defining iterators easier.</para><para>The template parameter <computeroutput>D</computeroutput> for <computeroutput><classname alt="boost::stl_interfaces::v1::iterator_interface">iterator_interface</classname></computeroutput> may be an incomplete type. Before any member of the resulting specialization of <computeroutput><classname alt="boost::stl_interfaces::v1::iterator_interface">iterator_interface</classname></computeroutput> other than special member functions is referenced, <computeroutput>D</computeroutput> shall be complete, and model <computeroutput>std::derived_from&lt;<classname alt="boost::stl_interfaces::v1::iterator_interface">iterator_interface</classname>&lt;D&gt;&gt;</computeroutput>. </para></description><typedef name="iterator_concept"><type>IteratorConcept</type></typedef>
81<typedef name="iterator_category"><type><emphasis>unspecified</emphasis></type></typedef>
82<typedef name="value_type"><type>std::remove_const_t&lt; ValueType &gt;</type></typedef>
83<typedef name="reference"><type>Reference</type></typedef>
84<typedef name="pointer"><type><emphasis>unspecified</emphasis></type></typedef>
85<typedef name="difference_type"><type>DifferenceType</type></typedef>
86<method-group name="public member functions">
87<method name="operator *" cv="const noexcept(noexcept(*access::base(std::declval&lt; D const &amp; &gt;()))))"><type>constexpr auto</type><template>
88          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
89        </template></method>
90<method name="operator-&gt;" cv="const noexcept(noexcept(detail::make_pointer&lt; pointer &gt;(*std::declval&lt; D const &amp; &gt;()))))"><type>constexpr auto</type><template>
91          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
92        </template></method>
93<method name="operator[]" cv="const noexcept(noexcept(D(std::declval&lt; D const &amp; &gt;()), std::declval&lt; D &amp; &gt;()+=i, *std::declval&lt; D &amp; &gt;())))"><type>constexpr auto</type><template>
94          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
95        </template><parameter name="i"><paramtype>difference_type</paramtype></parameter></method>
96<method name="operator++" cv="noexcept(noexcept(++access::base(std::declval&lt; D &amp; &gt;()))))"><type>constexpr auto</type><template>
97          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
98          <template-type-parameter name="Enable"><default>std::enable_if_t&lt;!<classname alt="boost::stl_interfaces::v1::v1_dtl::plus_eq">v1_dtl::plus_eq</classname>&lt;D, difference_type&gt;::value&gt;</default></template-type-parameter>
99        </template></method>
100<method name="operator++" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;()+=difference_type(1))))"><type>constexpr auto</type><template>
101          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
102        </template></method>
103<method name="operator++" cv="noexcept(noexcept(D(std::declval&lt; D &amp; &gt;()),++std::declval&lt; D &amp; &gt;())))"><type>constexpr auto</type><template>
104          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
105        </template><parameter name=""><paramtype>int</paramtype></parameter></method>
106<method name="operator+=" cv="noexcept(noexcept(access::base(std::declval&lt; D &amp; &gt;())+=n)))"><type>constexpr auto</type><template>
107          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
108        </template><parameter name="n"><paramtype>difference_type</paramtype></parameter></method>
109<method name="operator+" cv="const noexcept(noexcept(D(std::declval&lt; D &amp; &gt;()), std::declval&lt; D &amp; &gt;()+=i)))"><type>constexpr auto</type><template>
110          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
111        </template><parameter name="i"><paramtype>difference_type</paramtype></parameter></method>
112<method name="operator--" cv="noexcept(noexcept(--access::base(std::declval&lt; D &amp; &gt;()))))"><type>constexpr auto</type><template>
113          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
114          <template-type-parameter name="Enable"><default>std::enable_if_t&lt;!<classname alt="boost::stl_interfaces::v1::v1_dtl::plus_eq">v1_dtl::plus_eq</classname>&lt;D, difference_type&gt;::value&gt;</default></template-type-parameter>
115        </template></method>
116<method name="operator--" cv="noexcept(noexcept(D(std::declval&lt; D &amp; &gt;()), std::declval&lt; D &amp; &gt;()+=-difference_type(1))))"><type>constexpr auto</type><template>
117          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
118        </template></method>
119<method name="operator--" cv="noexcept(noexcept(D(std::declval&lt; D &amp; &gt;()), --std::declval&lt; D &amp; &gt;())))"><type>constexpr auto</type><template>
120          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
121        </template><parameter name=""><paramtype>int</paramtype></parameter></method>
122<method name="operator-=" cv="noexcept"><type>constexpr D &amp;</type><template>
123          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
124        </template><parameter name="i"><paramtype>difference_type</paramtype></parameter></method>
125<method name="operator-" cv="const noexcept(noexcept(access::base(std::declval&lt; D const &amp; &gt;()) - access::base(other))))"><type>constexpr auto</type><template>
126          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
127        </template><parameter name="other"><paramtype>D</paramtype></parameter></method>
128</method-group>
129</struct><namespace name="v1_dtl">
130<struct name="plus_eq"><template>
131      <template-type-parameter name="Iterator"/>
132      <template-type-parameter name="DifferenceType"/>
133      <template-type-parameter name=""><default>void</default></template-type-parameter>
134    </template><inherit access="public">false_type</inherit></struct><struct-specialization name="plus_eq"><template>
135      <template-type-parameter name="Iterator"/>
136      <template-type-parameter name="DifferenceType"/>
137    </template><specialization><template-arg>Iterator</template-arg><template-arg>DifferenceType</template-arg><template-arg>void_t&lt; decltype(std::declval&lt; Iterator &amp; &gt;()+=std::declval&lt; DifferenceType &gt;())&gt;</template-arg></specialization><inherit access="public">true_type</inherit></struct-specialization><struct name="ra_iter"><template>
138      <template-type-parameter name="Iterator"/>
139      <template-type-parameter name=""><default>void</default></template-type-parameter>
140    </template><inherit access="public">false_type</inherit></struct><struct-specialization name="ra_iter"><template>
141      <template-type-parameter name="Iterator"/>
142    </template><specialization><template-arg>Iterator</template-arg><template-arg>void_t&lt; typename Iterator::iterator_concept &gt;</template-arg></specialization><inherit access="public">std::integral_constant&lt; bool, std::is_base_of&lt; std::random_access_iterator_tag, Iterator::iterator_concept &gt;::value &gt;</inherit></struct-specialization>
143
144
145
146
147
148
149<function name="derived_iterator"><type>void</type><template>
150          <template-type-parameter name="D"/>
151          <template-type-parameter name="IteratorConcept"/>
152          <template-type-parameter name="ValueType"/>
153          <template-type-parameter name="Reference"/>
154          <template-type-parameter name="Pointer"/>
155          <template-type-parameter name="DifferenceType"/>
156        </template><parameter name=""><paramtype><classname>iterator_interface</classname>&lt; D, IteratorConcept, ValueType, Reference, Pointer, DifferenceType &gt; const &amp;</paramtype></parameter></function>
157</namespace>
158<typedef name="proxy_iterator_interface"><description><para>A template alias useful for defining proxy iterators. <para><emphasis role="bold">See Also:</emphasis><para><computeroutput><classname alt="boost::stl_interfaces::v1::iterator_interface">iterator_interface</classname></computeroutput>. </para>
159</para>
160</para></description><type><classname>iterator_interface</classname>&lt; Derived, IteratorConcept, ValueType, Reference, <classname>proxy_arrow_result</classname>&lt; Reference &gt;, DifferenceType &gt;</type></typedef>
161
162
163
164
165
166
167
168
169
170
171
172<function name="operator=="><type>constexpr auto</type><template>
173          <template-type-parameter name="IteratorInterface1"/>
174          <template-type-parameter name="IteratorInterface2"/>
175          <template-type-parameter name="Enable"><default>std::enable_if_t&lt;!v1_dtl::ra_iter&lt;IteratorInterface1&gt;::value&gt;</default></template-type-parameter>
176        </template><parameter name="lhs"><paramtype>IteratorInterface1</paramtype></parameter><parameter name="rhs"><paramtype>IteratorInterface2</paramtype></parameter><description><para>Implementation of <computeroutput>operator==()</computeroutput>, implemented in terms of the iterator underlying IteratorInterface, for all iterators derived from <computeroutput><classname alt="boost::stl_interfaces::v1::iterator_interface">iterator_interface</classname></computeroutput>, except those with an iterator category derived from <computeroutput>std::random_access_iterator_tag</computeroutput>.</para><para>Implementation of <computeroutput>operator==()</computeroutput> for all iterators derived from <computeroutput><classname alt="boost::stl_interfaces::v1::iterator_interface">iterator_interface</classname></computeroutput> that have an iterator category derived from <computeroutput>std::random_access_iterator_tag</computeroutput>. </para></description></function>
177<function name="operator!="><type>constexpr auto</type><template>
178          <template-type-parameter name="IteratorInterface1"/>
179          <template-type-parameter name="IteratorInterface2"/>
180        </template><parameter name="lhs"><paramtype>IteratorInterface1</paramtype></parameter><parameter name="rhs"><paramtype>IteratorInterface2</paramtype></parameter><description><para>Implementation of <computeroutput>operator!=()</computeroutput> for all iterators derived from <computeroutput><classname alt="boost::stl_interfaces::v1::iterator_interface">iterator_interface</classname></computeroutput>. </para></description></function>
181<function name="operator&lt;"><type>constexpr auto</type><template>
182          <template-type-parameter name="IteratorInterface1"/>
183          <template-type-parameter name="IteratorInterface2"/>
184        </template><parameter name="lhs"><paramtype>IteratorInterface1</paramtype></parameter><parameter name="rhs"><paramtype>IteratorInterface2</paramtype></parameter><description><para>Implementation of <computeroutput>operator&lt;()</computeroutput> for all iterators derived from <computeroutput><classname alt="boost::stl_interfaces::v1::iterator_interface">iterator_interface</classname></computeroutput> that have an iterator category derived from <computeroutput>std::random_access_iterator_tag</computeroutput>. </para></description></function>
185<function name="operator&lt;="><type>constexpr auto</type><template>
186          <template-type-parameter name="IteratorInterface1"/>
187          <template-type-parameter name="IteratorInterface2"/>
188        </template><parameter name="lhs"><paramtype>IteratorInterface1</paramtype></parameter><parameter name="rhs"><paramtype>IteratorInterface2</paramtype></parameter><description><para>Implementation of <computeroutput>operator&lt;=()</computeroutput> for all iterators derived from <computeroutput><classname alt="boost::stl_interfaces::v1::iterator_interface">iterator_interface</classname></computeroutput> that have an iterator category derived from <computeroutput>std::random_access_iterator_tag</computeroutput>. </para></description></function>
189<function name="operator&gt;"><type>constexpr auto</type><template>
190          <template-type-parameter name="IteratorInterface1"/>
191          <template-type-parameter name="IteratorInterface2"/>
192        </template><parameter name="lhs"><paramtype>IteratorInterface1</paramtype></parameter><parameter name="rhs"><paramtype>IteratorInterface2</paramtype></parameter><description><para>Implementation of <computeroutput>operator&gt;()</computeroutput> for all iterators derived from <computeroutput><classname alt="boost::stl_interfaces::v1::iterator_interface">iterator_interface</classname></computeroutput> that have an iterator category derived from <computeroutput>std::random_access_iterator_tag</computeroutput>. </para></description></function>
193<function name="operator&gt;="><type>constexpr auto</type><template>
194          <template-type-parameter name="IteratorInterface1"/>
195          <template-type-parameter name="IteratorInterface2"/>
196        </template><parameter name="lhs"><paramtype>IteratorInterface1</paramtype></parameter><parameter name="rhs"><paramtype>IteratorInterface2</paramtype></parameter><description><para>Implementation of <computeroutput>operator&gt;=()</computeroutput> for all iterators derived from <computeroutput><classname alt="boost::stl_interfaces::v1::iterator_interface">iterator_interface</classname></computeroutput> that have an iterator category derived from <computeroutput>std::random_access_iterator_tag</computeroutput>. </para></description></function>
197</namespace>
198</namespace>
199</namespace>
200<macro name="BOOST_STL_INTERFACES_STATIC_ASSERT_CONCEPT" kind="functionlike"><macro-parameter name="type"/><macro-parameter name="concept_name"/><description><para><computeroutput>static_asserts</computeroutput> that type <computeroutput>type</computeroutput> models concept <computeroutput>concept_name</computeroutput>. This is useful for checking that an iterator, view, etc. that you write using one of the *<computeroutput>_interface</computeroutput> templates models the right C++ concept.</para><para>For example: <computeroutput>BOOST_STL_INTERFACES_STATIC_ASSERT_CONCEPT(my_iter, std::input_iterator)</computeroutput>.</para><para><note><para>This macro expands to nothing when <computeroutput>__cpp_lib_concepts</computeroutput> is not defined. </para>
201</note>
202</para></description></macro>
203<macro name="BOOST_STL_INTERFACES_STATIC_ASSERT_ITERATOR_TRAITS" kind="functionlike"><macro-parameter name="iter"/><macro-parameter name="category"/><macro-parameter name="concept"/><macro-parameter name="value_type"/><macro-parameter name="reference"/><macro-parameter name="pointer"/><macro-parameter name="difference_type"/><description><para><computeroutput>static_asserts</computeroutput> that the types of all typedefs in <computeroutput>std::iterator_traits&lt;iter&gt;</computeroutput> match the remaining macro parameters. This is useful for checking that an iterator you write using <computeroutput>iterator_interface</computeroutput> has the correct iterator traits.</para><para>For example: <computeroutput>BOOST_STL_INTERFACES_STATIC_ASSERT_ITERATOR_TRAITS(my_iter, std::input_iterator_tag, std::input_iterator_tag, int, int &amp;, int *, std::ptrdiff_t)</computeroutput>.</para><para><note><para>This macro ignores the <computeroutput>concept</computeroutput> parameter when <computeroutput>__cpp_lib_concepts</computeroutput> is not defined. </para>
204</note>
205</para></description></macro>
206</header>
207<header name="boost/stl_interfaces/reverse_iterator.hpp">
208<namespace name="boost">
209<namespace name="stl_interfaces">
210<namespace name="v1">
211<struct name="reverse_iterator"><template>
212      <template-type-parameter name="BidiIter"/>
213    </template><inherit access="public">boost::stl_interfaces::v1::iterator_interface&lt; reverse_iterator&lt; BidiIter &gt;, std::iterator_traits&lt; BidiIter &gt;::iterator_category, std::iterator_traits&lt; BidiIter &gt;::value_type, std::iterator_traits&lt; BidiIter &gt;::reference, std::iterator_traits&lt; BidiIter &gt;::pointer, std::iterator_traits&lt; BidiIter &gt;::difference_type &gt;</inherit><description><para>This type is very similar to the C++20 version of <computeroutput>std::reverse_iterator</computeroutput>; it is <computeroutput>constexpr</computeroutput>-, <computeroutput>noexcept</computeroutput>-, and proxy-friendly. </para></description><method-group name="friend functions">
214<method name="reverse_iterator"><type>friend struct</type><template>
215          <template-type-parameter name="BidiIter2"/>
216        </template><description><para>A template alias for <computeroutput>std::reverse_iterator</computeroutput>. This only exists to make migration from Boost.STLInterfaces to C++20 easier; switch to the one in <computeroutput>std</computeroutput> as soon as you can. </para></description></method>
217</method-group>
218<method-group name="public member functions">
219<method name="operator *" cv="const noexcept(noexcept(std::prev(v1_dtl::ce_prev(std::declval&lt; BidiIter &amp; &gt;())))))"><type>constexpr std::iterator_traits&lt; BidiIter &gt;::reference</type></method>
220<method name="operator+=" cv="noexcept(noexcept(v1_dtl::ce_adv(std::declval&lt; BidiIter &amp; &gt;(), -n, typename std::iterator_traits&lt; BidiIter &gt;::iterator_category{}))))"><type>constexpr <classname>reverse_iterator</classname> &amp;</type><parameter name="n"><paramtype>typename std::iterator_traits&lt; BidiIter &gt;::difference_type</paramtype></parameter></method>
221<method name="base" cv="const noexcept"><type>constexpr BidiIter</type></method>
222</method-group>
223<constructor cv="noexcept(noexcept(BidiIter())))"/>
224<constructor cv="noexcept(noexcept(BidiIter(it))))"><parameter name="it"><paramtype>BidiIter</paramtype></parameter></constructor>
225<constructor><template>
226          <template-type-parameter name="BidiIter2"/>
227          <template-type-parameter name="E"><default>std::enable_if_t&lt;                std::is_convertible&lt;BidiIter2, BidiIter&gt;::value&gt;</default></template-type-parameter>
228        </template><parameter name="it"><paramtype><classname>reverse_iterator</classname>&lt; BidiIter2 &gt; const &amp;</paramtype></parameter></constructor>
229<method-group name="private member functions">
230<method name="base_reference" cv="noexcept"><type>constexpr BidiIter &amp;</type></method>
231<method name="base_reference" cv="const noexcept"><type>constexpr BidiIter const  &amp;</type></method>
232</method-group>
233</struct><namespace name="v1_dtl">
234
235
236<function name="ce_dist"><type>constexpr auto</type><template>
237          <template-type-parameter name="Iter"/>
238        </template><parameter name="f"><paramtype>Iter</paramtype></parameter><parameter name="l"><paramtype>Iter</paramtype></parameter><parameter name=""><paramtype>std::random_access_iterator_tag</paramtype></parameter></function>
239<function name="ce_dist"><type>constexpr auto</type><template>
240          <template-type-parameter name="Iter"/>
241          <template-type-parameter name="Tag"/>
242        </template><parameter name="f"><paramtype>Iter</paramtype></parameter><parameter name="l"><paramtype>Iter</paramtype></parameter><parameter name=""><paramtype>Tag</paramtype></parameter></function>
243<function name="ce_prev"><type>constexpr Iter</type><template>
244          <template-type-parameter name="Iter"/>
245        </template><parameter name="it"><paramtype>Iter</paramtype></parameter></function>
246<function name="ce_adv"><type>constexpr void</type><template>
247          <template-type-parameter name="Iter"/>
248          <template-type-parameter name="Offset"/>
249        </template><parameter name="f"><paramtype>Iter &amp;</paramtype></parameter><parameter name="n"><paramtype>Offset</paramtype></parameter><parameter name=""><paramtype>std::random_access_iterator_tag</paramtype></parameter></function>
250<function name="ce_adv"><type>constexpr void</type><template>
251          <template-type-parameter name="Iter"/>
252          <template-type-parameter name="Offset"/>
253          <template-type-parameter name="Tag"/>
254        </template><parameter name="f"><paramtype>Iter &amp;</paramtype></parameter><parameter name="n"><paramtype>Offset</paramtype></parameter><parameter name=""><paramtype>Tag</paramtype></parameter></function>
255
256</namespace>
257
258
259
260
261
262
263
264
265<function name="operator=="><type>constexpr auto</type><template>
266          <template-type-parameter name="BidiIter"/>
267        </template><parameter name="lhs"><paramtype><classname>reverse_iterator</classname>&lt; BidiIter &gt;</paramtype></parameter><parameter name="rhs"><paramtype><classname>reverse_iterator</classname>&lt; BidiIter &gt;</paramtype></parameter></function>
268<function name="operator=="><type>constexpr auto</type><template>
269          <template-type-parameter name="BidiIter1"/>
270          <template-type-parameter name="BidiIter2"/>
271        </template><parameter name="lhs"><paramtype><classname>reverse_iterator</classname>&lt; BidiIter1 &gt;</paramtype></parameter><parameter name="rhs"><paramtype><classname>reverse_iterator</classname>&lt; BidiIter2 &gt;</paramtype></parameter></function>
272<function name="make_reverse_iterator"><type>auto</type><template>
273          <template-type-parameter name="BidiIter"/>
274        </template><parameter name="it"><paramtype>BidiIter</paramtype></parameter><description><para>Makes a <computeroutput><classname alt="boost::stl_interfaces::v1::reverse_iterator">reverse_iterator</classname>&lt;BidiIter&gt;</computeroutput> from an iterator of type <computeroutput>Bidiiter</computeroutput>. </para></description></function>
275
276
277
278
279
280
281</namespace>
282<namespace name="v2">
283<typedef name="reverse_iterator"><description><para>A template alias for <computeroutput>std::reverse_iterator</computeroutput>. This only exists to make migration from Boost.STLInterfaces to C++20 easier; switch to the one in <computeroutput>std</computeroutput> as soon as you can. </para></description><type>std::reverse_iterator&lt; BidiIter &gt;</type></typedef>
284<function name="make_reverse_iterator"><type>auto</type><template>
285          <template-type-parameter name="BidiIter"/>
286        </template><parameter name="it"><paramtype>BidiIter</paramtype></parameter><description><para>Makes a <computeroutput>reverse_iterator&lt;BidiIter&gt;</computeroutput> from an iterator of type <computeroutput>Bidiiter</computeroutput>. This only exists to make migration from Boost.STLInterfaces to C++20 easier; switch to the one in <computeroutput>std</computeroutput> as soon as you can. </para></description></function>
287</namespace>
288</namespace>
289</namespace>
290</header>
291<header name="boost/stl_interfaces/sequence_container_interface.hpp">
292<namespace name="boost">
293<namespace name="stl_interfaces">
294<namespace name="v1">
295<struct name="sequence_container_interface"><template>
296      <template-type-parameter name="Derived"/>
297      <template-nontype-parameter name="Contiguity"><type>element_layout</type></template-nontype-parameter>
298    </template><description><para>A CRTP template that one may derive from to make it easier to define container types.</para><para>The template parameter <computeroutput>D</computeroutput> for <computeroutput><classname alt="boost::stl_interfaces::v1::sequence_container_interface">sequence_container_interface</classname></computeroutput> may be an incomplete type. Before any member of the resulting specialization of <computeroutput><classname alt="boost::stl_interfaces::v1::sequence_container_interface">sequence_container_interface</classname></computeroutput> other than special member functions is referenced, <computeroutput>D</computeroutput> shall be complete; shall model <computeroutput>std::derived_from&lt;<classname alt="boost::stl_interfaces::v1::sequence_container_interface">sequence_container_interface</classname>&lt;D&gt;&gt;</computeroutput>, <computeroutput>std::semiregular</computeroutput>, and <computeroutput>std::forward_range</computeroutput>; and shall contain all the nested types required in Table 72: Container requirements and, for those whose iterator nested type models <computeroutput>std::bidirectinal_iterator</computeroutput>, those in Table 73: Reversible container requirements.</para><para>For an object <computeroutput>d</computeroutput> of type <computeroutput>D</computeroutput>, a call to <computeroutput>std::ranges::begin(d)</computeroutput> sxhall not mutate any data members of <computeroutput>d</computeroutput>, and <computeroutput>d</computeroutput>'s destructor shall end the lifetimes of the objects in <computeroutput>[std::ranges::begin(d), std::ranges::end(d))</computeroutput>. </para></description><method-group name="public member functions">
299<method name="empty" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;().begin()==std::declval&lt; D &amp; &gt;().end())))"><type>constexpr auto</type><template>
300          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
301        </template></method>
302<method name="empty" cv="const noexcept(noexcept(std::declval&lt; D const &amp; &gt;().begin()==std::declval&lt; D const &amp; &gt;().end())))"><type>constexpr auto</type><template>
303          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
304        </template></method>
305<method name="data" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;().begin())))"><type>constexpr auto</type><template>
306          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
307          <template-nontype-parameter name="C"><type>element_layout</type><default>Contiguity</default></template-nontype-parameter>
308          <template-type-parameter name="Enable"><default>std::enable_if_t&lt;C == element_layout::contiguous&gt;</default></template-type-parameter>
309        </template></method>
310<method name="data" cv="const noexcept(noexcept(std::declval&lt; D const &amp; &gt;().begin())))"><type>constexpr auto</type><template>
311          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
312          <template-nontype-parameter name="C"><type>element_layout</type><default>Contiguity</default></template-nontype-parameter>
313          <template-type-parameter name="Enable"><default>std::enable_if_t&lt;C == element_layout::contiguous&gt;</default></template-type-parameter>
314        </template></method>
315<method name="size" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;().end() - std::declval&lt; D &amp; &gt;().begin())))"><type>constexpr auto</type><template>
316          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
317        </template></method>
318<method name="size" cv="const noexcept(noexcept(std::declval&lt; D const &amp; &gt;().end() - std::declval&lt; D const &amp; &gt;().begin())))"><type>constexpr auto</type><template>
319          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
320        </template></method>
321<method name="front" cv="noexcept(noexcept(*std::declval&lt; D &amp; &gt;().begin())))"><type>constexpr auto</type><template>
322          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
323        </template></method>
324<method name="front" cv="const noexcept(noexcept(*std::declval&lt; D const &amp; &gt;().begin())))"><type>constexpr auto</type><template>
325          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
326        </template></method>
327<method name="push_front" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;().emplace_front(x))))"><type>constexpr auto</type><template>
328          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
329        </template><parameter name="x"><paramtype>typename D::value_type const &amp;</paramtype></parameter></method>
330<method name="push_front" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;().emplace_front(std::move(x)))))"><type>constexpr auto</type><template>
331          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
332        </template><parameter name="x"><paramtype>typename D::value_type &amp;&amp;</paramtype></parameter></method>
333<method name="pop_front" cv="noexcept"><type>constexpr auto</type><template>
334          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
335        </template></method>
336<method name="back" cv="noexcept(noexcept(*std::prev(std::declval&lt; D &amp; &gt;().end()))))"><type>constexpr auto</type><template>
337          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
338          <template-type-parameter name="Enable"><default>std::enable_if_t&lt;                <classname alt="boost::stl_interfaces::v1::v1_dtl::decrementable_sentinel">v1_dtl::decrementable_sentinel</classname>&lt;D&gt;::value &amp;&amp;                v1_dtl::common_range&lt;D&gt;::value&gt;</default></template-type-parameter>
339        </template></method>
340<method name="back" cv="const noexcept(noexcept(*std::prev(std::declval&lt; D const &amp; &gt;().end()))))"><type>constexpr auto</type><template>
341          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
342          <template-type-parameter name="Enable"><default>std::enable_if_t&lt;                <classname alt="boost::stl_interfaces::v1::v1_dtl::decrementable_sentinel">v1_dtl::decrementable_sentinel</classname>&lt;D&gt;::value &amp;&amp;                v1_dtl::common_range&lt;D&gt;::value&gt;</default></template-type-parameter>
343        </template></method>
344<method name="push_back" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;().emplace_back(x))))"><type>constexpr auto</type><template>
345          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
346        </template><parameter name="x"><paramtype>typename D::value_type const &amp;</paramtype></parameter></method>
347<method name="push_back" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;().emplace_back(std::move(x)))))"><type>constexpr auto</type><template>
348          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
349        </template><parameter name="x"><paramtype>typename D::value_type &amp;&amp;</paramtype></parameter></method>
350<method name="pop_back" cv="noexcept"><type>constexpr auto</type><template>
351          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
352        </template></method>
353<method name="operator[]" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;().begin()[n])))"><type>constexpr auto</type><template>
354          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
355        </template><parameter name="n"><paramtype>typename D::size_type</paramtype></parameter></method>
356<method name="operator[]" cv="const noexcept(noexcept(std::declval&lt; D const &amp; &gt;().begin()[n])))"><type>constexpr auto</type><template>
357          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
358        </template><parameter name="n"><paramtype>typename D::size_type</paramtype></parameter></method>
359<method name="at"><type>constexpr auto</type><template>
360          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
361        </template><parameter name="i"><paramtype>typename D::size_type</paramtype></parameter></method>
362<method name="at" cv="const"><type>constexpr auto</type><template>
363          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
364        </template><parameter name="i"><paramtype>typename D::size_type</paramtype></parameter></method>
365<method name="begin" cv="const noexcept(noexcept(std::declval&lt; D &amp; &gt;().begin())))"><type>constexpr Iter</type><template>
366          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
367          <template-type-parameter name="Iter"><default>typename D::const_iterator</default></template-type-parameter>
368        </template></method>
369<method name="end" cv="const noexcept(noexcept(std::declval&lt; D &amp; &gt;().end())))"><type>constexpr Iter</type><template>
370          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
371          <template-type-parameter name="Iter"><default>typename D::const_iterator</default></template-type-parameter>
372        </template></method>
373<method name="cbegin" cv="const noexcept(noexcept(std::declval&lt; D const &amp; &gt;().begin())))"><type>constexpr auto</type><template>
374          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
375        </template></method>
376<method name="cend" cv="const noexcept(noexcept(std::declval&lt; D const &amp; &gt;().end())))"><type>constexpr auto</type><template>
377          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
378        </template></method>
379<method name="rbegin" cv="noexcept(noexcept(stl_interfaces::make_reverse_iterator(std::declval&lt; D &amp; &gt;().end()))))"><type>constexpr auto</type><template>
380          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
381          <template-type-parameter name="Enable"><default>std::enable_if_t&lt;v1_dtl::common_range&lt;D&gt;::value&gt;</default></template-type-parameter>
382        </template></method>
383<method name="rend" cv="noexcept(noexcept(stl_interfaces::make_reverse_iterator(std::declval&lt; D &amp; &gt;().begin()))))"><type>constexpr auto</type><template>
384          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
385          <template-type-parameter name="Enable"><default>std::enable_if_t&lt;v1_dtl::common_range&lt;D&gt;::value&gt;</default></template-type-parameter>
386        </template></method>
387<method name="rbegin" cv="const noexcept(noexcept(std::declval&lt; D &amp; &gt;().rbegin())))"><type>constexpr auto</type><template>
388          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
389        </template></method>
390<method name="rend" cv="const noexcept(noexcept(std::declval&lt; D &amp; &gt;().rend())))"><type>constexpr auto</type><template>
391          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
392        </template></method>
393<method name="crbegin" cv="const noexcept(noexcept(std::declval&lt; D const &amp; &gt;().rbegin())))"><type>constexpr auto</type><template>
394          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
395        </template></method>
396<method name="crend" cv="const noexcept(noexcept(std::declval&lt; D const &amp; &gt;().rend())))"><type>constexpr auto</type><template>
397          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
398        </template></method>
399<method name="insert" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;().emplace(pos, x))))"><type>constexpr auto</type><template>
400          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
401        </template><parameter name="pos"><paramtype>typename D::const_iterator</paramtype></parameter><parameter name="x"><paramtype>typename D::value_type const &amp;</paramtype></parameter></method>
402<method name="insert" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;() .emplace(pos, std::move(x)))))"><type>constexpr auto</type><template>
403          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
404        </template><parameter name="pos"><paramtype>typename D::const_iterator</paramtype></parameter><parameter name="x"><paramtype>typename D::value_type &amp;&amp;</paramtype></parameter></method>
405<method name="insert" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;().insert(pos, detail::make_n_iter(x, n), detail::make_n_iter_end(x, n)))))"><type>constexpr auto</type><template>
406          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
407        </template><parameter name="pos"><paramtype>typename D::const_iterator</paramtype></parameter><parameter name="n"><paramtype>typename D::size_type</paramtype></parameter><parameter name="x"><paramtype>typename D::value_type const &amp;</paramtype></parameter></method>
408<method name="insert" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;() .insert(pos, il.begin(), il.end()))))"><type>constexpr auto</type><template>
409          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
410        </template><parameter name="pos"><paramtype>typename D::const_iterator</paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; typename D::value_type &gt;</paramtype></parameter></method>
411<method name="erase" cv="noexcept"><type>constexpr auto</type><template>
412          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
413        </template><parameter name="pos"><paramtype>typename D::const_iterator</paramtype></parameter></method>
414<method name="assign" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;().insert(std::declval&lt; D &amp; &gt;().begin(), first, last))))"><type>constexpr auto</type><template>
415          <template-type-parameter name="InputIterator"/>
416          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
417          <template-type-parameter name="Enable"><default>std::enable_if_t&lt;v1_dtl::in_iter&lt;InputIterator&gt;::value&gt;</default></template-type-parameter>
418        </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter></method>
419<method name="assign" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;() .insert(std::declval&lt; D &amp; &gt;().begin(), detail::make_n_iter(x, n), detail::make_n_iter_end(x, n)))))"><type>constexpr auto</type><template>
420          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
421        </template><parameter name="n"><paramtype>typename D::size_type</paramtype></parameter><parameter name="x"><paramtype>typename D::value_type const &amp;</paramtype></parameter></method>
422<method name="assign" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;().assign(il.begin(), il.end()))))"><type>constexpr auto</type><template>
423          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
424        </template><parameter name="il"><paramtype>std::initializer_list&lt; typename D::value_type &gt;</paramtype></parameter></method>
425<method name="clear" cv="noexcept"><type>constexpr auto</type><template>
426          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
427        </template></method>
428</method-group>
429<copy-assignment cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;().assign(il.begin(), il.end()))))"><type>constexpr auto</type><template>
430          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
431        </template><parameter name="il"><paramtype>std::initializer_list&lt; typename D::value_type &gt;</paramtype></parameter></copy-assignment>
432</struct><namespace name="v1_dtl">
433<struct name="clear_impl"><template>
434      <template-type-parameter name="D"/>
435      <template-type-parameter name=""><default>void</default></template-type-parameter>
436    </template><method-group name="public static functions">
437<method name="call" cv="noexcept" specifiers="static"><type>constexpr void</type><parameter name="d"><paramtype>D &amp;</paramtype></parameter></method>
438</method-group>
439</struct><struct-specialization name="clear_impl"><template>
440      <template-type-parameter name="D"/>
441    </template><specialization><template-arg>D</template-arg><template-arg>void_t&lt; decltype(std::declval&lt; D &gt;().clear())&gt;</template-arg></specialization><method-group name="public static functions">
442<method name="call" cv="noexcept" specifiers="static"><type>constexpr void</type><parameter name="d"><paramtype>D &amp;</paramtype></parameter></method>
443</method-group>
444</struct-specialization><typedef name="in_iter"><type>std::is_convertible&lt; typename std::iterator_traits&lt; Iter &gt;::iterator_category, std::input_iterator_tag &gt;</type></typedef>
445
446<function name="derived_container"><type>void</type><template>
447          <template-type-parameter name="D"/>
448          <template-nontype-parameter name="Contiguity"><type>element_layout</type></template-nontype-parameter>
449        </template><parameter name=""><paramtype><classname>sequence_container_interface</classname>&lt; D, Contiguity &gt; const &amp;</paramtype></parameter></function>
450
451
452
453
454
455
456</namespace>
457
458<function name="swap"><type>constexpr auto</type><template>
459          <template-type-parameter name="ContainerInterface"/>
460        </template><parameter name="lhs"><paramtype>ContainerInterface &amp;</paramtype></parameter><parameter name="rhs"><paramtype>ContainerInterface &amp;</paramtype></parameter><description><para>Implementation of free function <computeroutput>swap()</computeroutput> for all containers derived from <computeroutput><classname alt="boost::stl_interfaces::v1::sequence_container_interface">sequence_container_interface</classname></computeroutput>. </para></description></function>
461<function name="operator=="><type>constexpr auto</type><template>
462          <template-type-parameter name="ContainerInterface"/>
463        </template><parameter name="lhs"><paramtype>ContainerInterface const &amp;</paramtype></parameter><parameter name="rhs"><paramtype>ContainerInterface const &amp;</paramtype></parameter><description><para>Implementation of <computeroutput>operator==()</computeroutput> for all containers derived from <computeroutput><classname alt="boost::stl_interfaces::v1::sequence_container_interface">sequence_container_interface</classname></computeroutput>. </para></description></function>
464<function name="operator!="><type>constexpr auto</type><template>
465          <template-type-parameter name="ContainerInterface"/>
466        </template><parameter name="lhs"><paramtype>ContainerInterface const &amp;</paramtype></parameter><parameter name="rhs"><paramtype>ContainerInterface const &amp;</paramtype></parameter><description><para>Implementation of <computeroutput>operator!=()</computeroutput> for all containers derived from <computeroutput><classname alt="boost::stl_interfaces::v1::sequence_container_interface">sequence_container_interface</classname></computeroutput>. </para></description></function>
467<function name="operator&lt;"><type>constexpr auto</type><template>
468          <template-type-parameter name="ContainerInterface"/>
469        </template><parameter name="lhs"><paramtype>ContainerInterface const &amp;</paramtype></parameter><parameter name="rhs"><paramtype>ContainerInterface const &amp;</paramtype></parameter><description><para>Implementation of <computeroutput>operator&lt;()</computeroutput> for all containers derived from <computeroutput><classname alt="boost::stl_interfaces::v1::sequence_container_interface">sequence_container_interface</classname></computeroutput>. </para></description></function>
470<function name="operator&lt;="><type>constexpr auto</type><template>
471          <template-type-parameter name="ContainerInterface"/>
472        </template><parameter name="lhs"><paramtype>ContainerInterface const &amp;</paramtype></parameter><parameter name="rhs"><paramtype>ContainerInterface const &amp;</paramtype></parameter><description><para>Implementation of <computeroutput>operator&lt;=()</computeroutput> for all containers derived from <computeroutput><classname alt="boost::stl_interfaces::v1::sequence_container_interface">sequence_container_interface</classname></computeroutput>. </para></description></function>
473<function name="operator&gt;"><type>constexpr auto</type><template>
474          <template-type-parameter name="ContainerInterface"/>
475        </template><parameter name="lhs"><paramtype>ContainerInterface const &amp;</paramtype></parameter><parameter name="rhs"><paramtype>ContainerInterface const &amp;</paramtype></parameter><description><para>Implementation of <computeroutput>operator&gt;()</computeroutput> for all containers derived from <computeroutput><classname alt="boost::stl_interfaces::v1::sequence_container_interface">sequence_container_interface</classname></computeroutput>. </para></description></function>
476<function name="operator&gt;="><type>constexpr auto</type><template>
477          <template-type-parameter name="ContainerInterface"/>
478        </template><parameter name="lhs"><paramtype>ContainerInterface const &amp;</paramtype></parameter><parameter name="rhs"><paramtype>ContainerInterface const &amp;</paramtype></parameter><description><para>Implementation of <computeroutput>operator&gt;=()</computeroutput> for all containers derived from <computeroutput><classname alt="boost::stl_interfaces::v1::sequence_container_interface">sequence_container_interface</classname></computeroutput>. </para></description></function>
479
480
481
482
483
484
485
486
487
488</namespace>
489</namespace>
490</namespace>
491</header>
492<header name="boost/stl_interfaces/view_interface.hpp">
493<namespace name="boost">
494<namespace name="stl_interfaces">
495<namespace name="v1">
496<struct name="view_interface"><template>
497      <template-type-parameter name="Derived"/>
498      <template-nontype-parameter name="Contiguity"><type>element_layout</type></template-nontype-parameter>
499    </template><description><para>A CRTP template that one may derive from to make it easier to define <computeroutput>std::ranges::view</computeroutput>-like types with a container-like interface. This is a pre-C++20 version of C++20's <computeroutput><classname alt="boost::stl_interfaces::v1::view_interface">view_interface</classname></computeroutput> (see [view.interface] in the C++ standard).</para><para>The template parameter <computeroutput>D</computeroutput> for <computeroutput><classname alt="boost::stl_interfaces::v1::view_interface">view_interface</classname></computeroutput> may be an incomplete type. Before any member of the resulting specialization of <computeroutput><classname alt="boost::stl_interfaces::v1::view_interface">view_interface</classname></computeroutput> other than special member functions is referenced, <computeroutput>D</computeroutput> shall be complete, and model both <computeroutput>std::derived_from&lt;<classname alt="boost::stl_interfaces::v1::view_interface">view_interface</classname>&lt;D&gt;&gt;</computeroutput> and <computeroutput>std::view</computeroutput>. </para></description><method-group name="public member functions">
500<method name="empty" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;().begin()==std::declval&lt; D &amp; &gt;().end())))"><type>constexpr auto</type><template>
501          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
502        </template></method>
503<method name="empty" cv="const noexcept(noexcept(std::declval&lt; D const &amp; &gt;().begin()==std::declval&lt; D const &amp; &gt;().end())))"><type>constexpr auto</type><template>
504          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
505        </template></method>
506<method name="operator bool" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;().empty())))" specifiers="explicit"><type>constexpr</type><template>
507          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
508          <template-type-parameter name="R"><default>decltype(std::declval&lt;D &amp;&gt;().empty())</default></template-type-parameter>
509        </template></method>
510<method name="operator bool" cv="const noexcept(noexcept(std::declval&lt; D const &amp; &gt;().empty())))" specifiers="explicit"><type>constexpr</type><template>
511          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
512          <template-type-parameter name="R"><default>decltype(std::declval&lt;D const &amp;&gt;().empty())</default></template-type-parameter>
513        </template></method>
514<method name="data" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;().begin())))"><type>constexpr auto</type><template>
515          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
516          <template-nontype-parameter name="C"><type>element_layout</type><default>Contiguity</default></template-nontype-parameter>
517          <template-type-parameter name="Enable"><default>std::enable_if_t&lt;C == element_layout::contiguous&gt;</default></template-type-parameter>
518        </template></method>
519<method name="data" cv="const noexcept(noexcept(std::declval&lt; D const &amp; &gt;().begin())))"><type>constexpr auto</type><template>
520          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
521          <template-nontype-parameter name="C"><type>element_layout</type><default>Contiguity</default></template-nontype-parameter>
522          <template-type-parameter name="Enable"><default>std::enable_if_t&lt;C == element_layout::contiguous&gt;</default></template-type-parameter>
523        </template></method>
524<method name="size" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;().end() - std::declval&lt; D &amp; &gt;().begin())))"><type>constexpr auto</type><template>
525          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
526        </template></method>
527<method name="size" cv="const noexcept(noexcept(std::declval&lt; D const &amp; &gt;().end() - std::declval&lt; D const &amp; &gt;().begin())))"><type>constexpr auto</type><template>
528          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
529        </template></method>
530<method name="front" cv="noexcept(noexcept(*std::declval&lt; D &amp; &gt;().begin())))"><type>constexpr auto</type><template>
531          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
532        </template></method>
533<method name="front" cv="const noexcept(noexcept(*std::declval&lt; D const &amp; &gt;().begin())))"><type>constexpr auto</type><template>
534          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
535        </template></method>
536<method name="back" cv="noexcept(noexcept(*std::prev(std::declval&lt; D &amp; &gt;().end()))))"><type>constexpr auto</type><template>
537          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
538          <template-type-parameter name="Enable"><default>std::enable_if_t&lt;                <classname alt="boost::stl_interfaces::v1::v1_dtl::decrementable_sentinel">v1_dtl::decrementable_sentinel</classname>&lt;D&gt;::value &amp;&amp;                v1_dtl::common_range&lt;D&gt;::value&gt;</default></template-type-parameter>
539        </template></method>
540<method name="back" cv="const noexcept(noexcept(*std::prev(std::declval&lt; D const &amp; &gt;().end()))))"><type>constexpr auto</type><template>
541          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
542          <template-type-parameter name="Enable"><default>std::enable_if_t&lt;                <classname alt="boost::stl_interfaces::v1::v1_dtl::decrementable_sentinel">v1_dtl::decrementable_sentinel</classname>&lt;D&gt;::value &amp;&amp;                v1_dtl::common_range&lt;D&gt;::value&gt;</default></template-type-parameter>
543        </template></method>
544<method name="operator[]" cv="noexcept(noexcept(std::declval&lt; D &amp; &gt;().begin()[n])))"><type>constexpr auto</type><template>
545          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
546        </template><parameter name="n"><paramtype>v1_dtl::range_difference_t&lt; D &gt;</paramtype></parameter></method>
547<method name="operator[]" cv="const noexcept(noexcept(std::declval&lt; D const &amp; &gt;().begin()[n])))"><type>constexpr auto</type><template>
548          <template-type-parameter name="D"><default>Derived</default></template-type-parameter>
549        </template><parameter name="n"><paramtype>v1_dtl::range_difference_t&lt; D &gt;</paramtype></parameter></method>
550</method-group>
551</struct><namespace name="v1_dtl">
552<function name="derived_view"><type>void</type><template>
553          <template-type-parameter name="D"/>
554          <template-nontype-parameter name="Contiguity"><type>element_layout</type></template-nontype-parameter>
555        </template><parameter name=""><paramtype><classname>view_interface</classname>&lt; D, Contiguity &gt; const &amp;</paramtype></parameter></function>
556
557
558
559
560
561
562
563</namespace>
564<function name="operator!="><type>constexpr auto</type><template>
565          <template-type-parameter name="ViewInterface"/>
566        </template><parameter name="lhs"><paramtype>ViewInterface</paramtype></parameter><parameter name="rhs"><paramtype>ViewInterface</paramtype></parameter><description><para>Implementation of <computeroutput>operator!=()</computeroutput> for all views derived from <computeroutput><classname alt="boost::stl_interfaces::v1::view_interface">view_interface</classname></computeroutput>. </para></description></function>
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583</namespace>
584<namespace name="v2">
585<typedef name="view_interface"><description><para>A template alias for <computeroutput>std::view_interface</computeroutput>. This only exists to make migration from Boost.STLInterfaces to C++20 easier; switch to the one in <computeroutput>std</computeroutput> as soon as you can. </para></description><type>std::ranges::view_interface&lt; D &gt;</type></typedef>
586
587</namespace>
588</namespace>
589</namespace>
590</header>
591</library-reference>