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< decltype(--std::declval< sentinel_t< Range > & >())></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< decltype(std::declval< Range & >().begin())></template-arg></specialization><typedef name="type"><type>decltype(std::declval< Range & >().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< decltype(std::declval< Range & >().end())></template-arg></specialization><typedef name="type"><type>decltype(std::declval< Range & >().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< Iter >::difference_type</type></typedef> 26<typedef name="iterator_t"><type>typename <classname>iterator</classname>< Range >::type</type></typedef> 27<typedef name="sentinel_t"><type>typename <classname>sentinel</classname>< Range >::type</type></typedef> 28<typedef name="range_difference_t"><type>iter_difference_t< iterator_t< Range > ></type></typedef> 29<typedef name="common_range"><type>std::is_same< iterator_t< Range >, sentinel_t< Range > ></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->()</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->" cv="const noexcept"><type>constexpr T const *</type></method> 68<method name="operator->" cv="noexcept"><type>constexpr T *</type></method> 69</method-group> 70<constructor cv="noexcept(noexcept(T(value))))"><parameter name="value"><paramtype>T const &</paramtype></parameter></constructor> 71<constructor cv="noexcept(noexcept(T(std::move(value)))))"><parameter name="value"><paramtype>T &&</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<<classname alt="boost::stl_interfaces::v1::iterator_interface">iterator_interface</classname><D>></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< ValueType ></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< D const & >()))))"><type>constexpr auto</type><template> 88 <template-type-parameter name="D"><default>Derived</default></template-type-parameter> 89 </template></method> 90<method name="operator->" cv="const noexcept(noexcept(detail::make_pointer< pointer >(*std::declval< D const & >()))))"><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< D const & >()), std::declval< D & >()+=i, *std::declval< D & >())))"><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< D & >()))))"><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<!<classname alt="boost::stl_interfaces::v1::v1_dtl::plus_eq">v1_dtl::plus_eq</classname><D, difference_type>::value></default></template-type-parameter> 99 </template></method> 100<method name="operator++" cv="noexcept(noexcept(std::declval< D & >()+=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< D & >()),++std::declval< D & >())))"><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< D & >())+=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< D & >()), std::declval< D & >()+=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< D & >()))))"><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<!<classname alt="boost::stl_interfaces::v1::v1_dtl::plus_eq">v1_dtl::plus_eq</classname><D, difference_type>::value></default></template-type-parameter> 115 </template></method> 116<method name="operator--" cv="noexcept(noexcept(D(std::declval< D & >()), std::declval< D & >()+=-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< D & >()), --std::declval< D & >())))"><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 &</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< D const & >()) - 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< decltype(std::declval< Iterator & >()+=std::declval< DifferenceType >())></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< typename Iterator::iterator_concept ></template-arg></specialization><inherit access="public">std::integral_constant< bool, std::is_base_of< std::random_access_iterator_tag, Iterator::iterator_concept >::value ></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>< D, IteratorConcept, ValueType, Reference, Pointer, DifferenceType > const &</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>< Derived, IteratorConcept, ValueType, Reference, <classname>proxy_arrow_result</classname>< Reference >, DifferenceType ></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<!v1_dtl::ra_iter<IteratorInterface1>::value></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<"><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<()</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<="><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<=()</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>"><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>()</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>="><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>=()</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<iter></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 &, 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< reverse_iterator< BidiIter >, std::iterator_traits< BidiIter >::iterator_category, std::iterator_traits< BidiIter >::value_type, std::iterator_traits< BidiIter >::reference, std::iterator_traits< BidiIter >::pointer, std::iterator_traits< BidiIter >::difference_type ></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< BidiIter & >())))))"><type>constexpr std::iterator_traits< BidiIter >::reference</type></method> 220<method name="operator+=" cv="noexcept(noexcept(v1_dtl::ce_adv(std::declval< BidiIter & >(), -n, typename std::iterator_traits< BidiIter >::iterator_category{}))))"><type>constexpr <classname>reverse_iterator</classname> &</type><parameter name="n"><paramtype>typename std::iterator_traits< BidiIter >::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< std::is_convertible<BidiIter2, BidiIter>::value></default></template-type-parameter> 228 </template><parameter name="it"><paramtype><classname>reverse_iterator</classname>< BidiIter2 > const &</paramtype></parameter></constructor> 229<method-group name="private member functions"> 230<method name="base_reference" cv="noexcept"><type>constexpr BidiIter &</type></method> 231<method name="base_reference" cv="const noexcept"><type>constexpr BidiIter const &</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 &</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 &</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>< BidiIter ></paramtype></parameter><parameter name="rhs"><paramtype><classname>reverse_iterator</classname>< BidiIter ></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>< BidiIter1 ></paramtype></parameter><parameter name="rhs"><paramtype><classname>reverse_iterator</classname>< BidiIter2 ></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><BidiIter></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< BidiIter ></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<BidiIter></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<<classname alt="boost::stl_interfaces::v1::sequence_container_interface">sequence_container_interface</classname><D>></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< D & >().begin()==std::declval< D & >().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< D const & >().begin()==std::declval< D const & >().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< D & >().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<C == element_layout::contiguous></default></template-type-parameter> 309 </template></method> 310<method name="data" cv="const noexcept(noexcept(std::declval< D const & >().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<C == element_layout::contiguous></default></template-type-parameter> 314 </template></method> 315<method name="size" cv="noexcept(noexcept(std::declval< D & >().end() - std::declval< D & >().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< D const & >().end() - std::declval< D const & >().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< D & >().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< D const & >().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< D & >().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 &</paramtype></parameter></method> 330<method name="push_front" cv="noexcept(noexcept(std::declval< D & >().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 &&</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< D & >().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< <classname alt="boost::stl_interfaces::v1::v1_dtl::decrementable_sentinel">v1_dtl::decrementable_sentinel</classname><D>::value && v1_dtl::common_range<D>::value></default></template-type-parameter> 339 </template></method> 340<method name="back" cv="const noexcept(noexcept(*std::prev(std::declval< D const & >().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< <classname alt="boost::stl_interfaces::v1::v1_dtl::decrementable_sentinel">v1_dtl::decrementable_sentinel</classname><D>::value && v1_dtl::common_range<D>::value></default></template-type-parameter> 343 </template></method> 344<method name="push_back" cv="noexcept(noexcept(std::declval< D & >().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 &</paramtype></parameter></method> 347<method name="push_back" cv="noexcept(noexcept(std::declval< D & >().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 &&</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< D & >().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< D const & >().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< D & >().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< D & >().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< D const & >().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< D const & >().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< D & >().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<v1_dtl::common_range<D>::value></default></template-type-parameter> 382 </template></method> 383<method name="rend" cv="noexcept(noexcept(stl_interfaces::make_reverse_iterator(std::declval< D & >().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<v1_dtl::common_range<D>::value></default></template-type-parameter> 386 </template></method> 387<method name="rbegin" cv="const noexcept(noexcept(std::declval< D & >().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< D & >().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< D const & >().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< D const & >().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< D & >().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 &</paramtype></parameter></method> 402<method name="insert" cv="noexcept(noexcept(std::declval< D & >() .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 &&</paramtype></parameter></method> 405<method name="insert" cv="noexcept(noexcept(std::declval< D & >().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 &</paramtype></parameter></method> 408<method name="insert" cv="noexcept(noexcept(std::declval< D & >() .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< typename D::value_type ></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< D & >().insert(std::declval< D & >().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<v1_dtl::in_iter<InputIterator>::value></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< D & >() .insert(std::declval< D & >().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 &</paramtype></parameter></method> 422<method name="assign" cv="noexcept(noexcept(std::declval< D & >().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< typename D::value_type ></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< D & >().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< typename D::value_type ></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 &</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< decltype(std::declval< D >().clear())></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 &</paramtype></parameter></method> 443</method-group> 444</struct-specialization><typedef name="in_iter"><type>std::is_convertible< typename std::iterator_traits< Iter >::iterator_category, std::input_iterator_tag ></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>< D, Contiguity > const &</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 &</paramtype></parameter><parameter name="rhs"><paramtype>ContainerInterface &</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 &</paramtype></parameter><parameter name="rhs"><paramtype>ContainerInterface const &</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 &</paramtype></parameter><parameter name="rhs"><paramtype>ContainerInterface const &</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<"><type>constexpr auto</type><template> 468 <template-type-parameter name="ContainerInterface"/> 469 </template><parameter name="lhs"><paramtype>ContainerInterface const &</paramtype></parameter><parameter name="rhs"><paramtype>ContainerInterface const &</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> 470<function name="operator<="><type>constexpr auto</type><template> 471 <template-type-parameter name="ContainerInterface"/> 472 </template><parameter name="lhs"><paramtype>ContainerInterface const &</paramtype></parameter><parameter name="rhs"><paramtype>ContainerInterface const &</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> 473<function name="operator>"><type>constexpr auto</type><template> 474 <template-type-parameter name="ContainerInterface"/> 475 </template><parameter name="lhs"><paramtype>ContainerInterface const &</paramtype></parameter><parameter name="rhs"><paramtype>ContainerInterface const &</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> 476<function name="operator>="><type>constexpr auto</type><template> 477 <template-type-parameter name="ContainerInterface"/> 478 </template><parameter name="lhs"><paramtype>ContainerInterface const &</paramtype></parameter><parameter name="rhs"><paramtype>ContainerInterface const &</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> 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<<classname alt="boost::stl_interfaces::v1::view_interface">view_interface</classname><D>></computeroutput> and <computeroutput>std::view</computeroutput>. </para></description><method-group name="public member functions"> 500<method name="empty" cv="noexcept(noexcept(std::declval< D & >().begin()==std::declval< D & >().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< D const & >().begin()==std::declval< D const & >().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< D & >().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<D &>().empty())</default></template-type-parameter> 509 </template></method> 510<method name="operator bool" cv="const noexcept(noexcept(std::declval< D const & >().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<D const &>().empty())</default></template-type-parameter> 513 </template></method> 514<method name="data" cv="noexcept(noexcept(std::declval< D & >().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<C == element_layout::contiguous></default></template-type-parameter> 518 </template></method> 519<method name="data" cv="const noexcept(noexcept(std::declval< D const & >().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<C == element_layout::contiguous></default></template-type-parameter> 523 </template></method> 524<method name="size" cv="noexcept(noexcept(std::declval< D & >().end() - std::declval< D & >().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< D const & >().end() - std::declval< D const & >().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< D & >().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< D const & >().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< D & >().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< <classname alt="boost::stl_interfaces::v1::v1_dtl::decrementable_sentinel">v1_dtl::decrementable_sentinel</classname><D>::value && v1_dtl::common_range<D>::value></default></template-type-parameter> 539 </template></method> 540<method name="back" cv="const noexcept(noexcept(*std::prev(std::declval< D const & >().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< <classname alt="boost::stl_interfaces::v1::v1_dtl::decrementable_sentinel">v1_dtl::decrementable_sentinel</classname><D>::value && v1_dtl::common_range<D>::value></default></template-type-parameter> 543 </template></method> 544<method name="operator[]" cv="noexcept(noexcept(std::declval< D & >().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< D ></paramtype></parameter></method> 547<method name="operator[]" cv="const noexcept(noexcept(std::declval< D const & >().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< D ></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>< D, Contiguity > const &</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< D ></type></typedef> 586 587</namespace> 588</namespace> 589</namespace> 590</header> 591</library-reference>