|
257 | 257 |
|
258 | 258 | namespace views { inline constexpr @\unspec@ join = @\unspec@; }
|
259 | 259 |
|
260 |
| - // \ref{range.lazy.split}, split view |
| 260 | + // \ref{range.lazy.split}, lazy split view |
261 | 261 | template<class R>
|
262 | 262 | concept @\exposconcept{tiny-range}@ = @\seebelow@; // \expos
|
263 | 263 |
|
|
267 | 267 | (@\libconcept{forward_range}@<V> || @\exposconcept{tiny-range}@<Pattern>)
|
268 | 268 | class lazy_split_view;
|
269 | 269 |
|
| 270 | + // \ref{range.split}, split view |
270 | 271 | template<@\libconcept{forward_range}@ V, @\libconcept{forward_range}@ Pattern>
|
271 | 272 | requires @\libconcept{view}@<V> && @\libconcept{view}@<Pattern> &&
|
272 | 273 | @\libconcept{indirectly_comparable}@<iterator_t<V>, iterator_t<Pattern>, ranges::equal_to>
|
|
5524 | 5525 | V @\exposid{base_}@ = V(); // \expos
|
5525 | 5526 | Pattern @\exposid{pattern_}@ = Pattern(); // \expos
|
5526 | 5527 | iterator_t<V> @\exposid{current_}@ = iterator_t<V>(); // \expos, present only if \tcode{!\libconcept{forward_range}<V>}
|
5527 |
| - bool @\exposid{trailing_empty_}@ = false; // \expos |
5528 | 5528 | // \ref{range.lazy.split.outer}, class template \tcode{lazy_split_view::\exposid{outer-iterator}}
|
5529 | 5529 | template<bool> struct @\exposid{outer-iterator}@; // \expos
|
5530 | 5530 | // \ref{range.lazy.split.inner}, class template \tcode{lazy_split_view::\exposid{inner-iterator}}
|
|
5575 | 5575 | }
|
5576 | 5576 | \end{codeblock}
|
5577 | 5577 |
|
5578 |
| -\indexlibraryctor{split_view}% |
| 5578 | +\indexlibraryctor{lazy_split_view}% |
5579 | 5579 | \begin{itemdecl}
|
5580 | 5580 | constexpr lazy_split_view(V base, Pattern pattern);
|
5581 | 5581 | \end{itemdecl}
|
|
5618 | 5618 | using @\exposid{Base}@ = @\exposid{maybe-const}@<Const, V>; // \expos
|
5619 | 5619 | @\exposid{Parent}@* @\exposid{parent_}@ = nullptr; // \expos
|
5620 | 5620 | iterator_t<@\exposid{Base}@> @\exposid{current_}@ = iterator_t<@\exposid{Base}@>(); // \expos, present only if \tcode{V} models \libconcept{forward_range}
|
| 5621 | + bool @\exposid{trailing_empty_}@ = false; // \expos |
5621 | 5622 |
|
5622 | 5623 | public:
|
5623 | 5624 | using iterator_concept =
|
|
5761 | 5762 | \effects
|
5762 | 5763 | Equivalent to:
|
5763 | 5764 | \begin{codeblock}
|
5764 |
| -return x.@\exposid{current_}@ == y.@\exposid{current_}@ && x.@\exposid{trailing_empty_}@ == y.@\exposid{trailing_empty_}@ |
| 5765 | +return x.@\exposid{current_}@ == y.@\exposid{current_}@ && x.@\exposid{trailing_empty_}@ == y.@\exposid{trailing_empty_}@; |
5765 | 5766 | \end{codeblock}
|
5766 | 5767 | \end{itemdescr}
|
5767 | 5768 |
|
|
6148 | 6149 | \end{itemdescr}
|
6149 | 6150 |
|
6150 | 6151 | \begin{itemdecl}
|
6151 |
| -constexpr subrange<iterator_t<V>> @\exposid{find-next}(iterator_t<V> it); // \expos |
| 6152 | +constexpr subrange<iterator_t<V>> @\exposid{find-next}@(iterator_t<V> it); // \expos |
6152 | 6153 | \end{itemdecl}
|
6153 | 6154 |
|
6154 | 6155 | \begin{itemdescr}
|
|
6165 | 6166 | \end{codeblock}
|
6166 | 6167 | \end{itemdescr}
|
6167 | 6168 |
|
6168 |
| -\rSec3[range.split.iterator]{Class template \tcode{split_view::\exposid{iterator}}} |
| 6169 | +\rSec3[range.split.iterator]{Class \tcode{split_view::\exposid{iterator}}} |
6169 | 6170 |
|
6170 | 6171 | \begin{codeblock}
|
6171 | 6172 | namespace std::ranges {
|
|
6194 | 6195 | constexpr @\exposid{iterator}@& operator++();
|
6195 | 6196 | constexpr @\exposid{iterator}@ operator++(int);
|
6196 | 6197 |
|
6197 |
| - friend constexpr bool operator==(const @\exposid{iterator}@& x, const @\exposid{iterator}@& y) |
| 6198 | + friend constexpr bool operator==(const @\exposid{iterator}@& x, const @\exposid{iterator}@& y); |
6198 | 6199 | };
|
6199 | 6200 | }
|
6200 | 6201 | \end{codeblock}
|
|
6272 | 6273 | \end{itemdescr}
|
6273 | 6274 |
|
6274 | 6275 | \begin{itemdecl}
|
6275 |
| -friend constexpr bool operator==(const @\exposid{iterator}@& x, const @\exposid{iterator}@& y) |
| 6276 | +friend constexpr bool operator==(const @\exposid{iterator}@& x, const @\exposid{iterator}@& y); |
6276 | 6277 | \end{itemdecl}
|
6277 | 6278 |
|
6278 | 6279 | \begin{itemdescr}
|
|
6284 | 6285 | \end{codeblock}
|
6285 | 6286 | \end{itemdescr}
|
6286 | 6287 |
|
6287 |
| -\rSec3[range.split.sentinel]{Class template \tcode{split_view::\exposid{sentinel}}} |
| 6288 | +\rSec3[range.split.sentinel]{Class \tcode{split_view::\exposid{sentinel}}} |
6288 | 6289 |
|
6289 | 6290 | \begin{codeblock}
|
6290 | 6291 | namespace std::ranges {
|
|
6305 | 6306 | \end{codeblock}
|
6306 | 6307 |
|
6307 | 6308 | \begin{itemdecl}
|
6308 |
| -constexpr explicit sentinel(split_view& parent); |
| 6309 | +constexpr explicit @\exposid{sentinel}@(split_view& parent); |
6309 | 6310 | \end{itemdecl}
|
6310 | 6311 |
|
6311 | 6312 | \begin{itemdescr}
|
|
6315 | 6316 | \end{itemdescr}
|
6316 | 6317 |
|
6317 | 6318 | \begin{itemdecl}
|
6318 |
| -friend constexpr bool operator==(const iterator& x, const sentinel& y); |
| 6319 | +friend constexpr bool operator==(const @\exposid{iterator}@& x, const @\exposid{sentinel}@& y); |
6319 | 6320 | \end{itemdecl}
|
6320 | 6321 |
|
6321 | 6322 | \begin{itemdescr}
|
|
0 commit comments