|
206 | 206 | namespace views { inline constexpr @\unspec@ take = @\unspec@; }
|
207 | 207 |
|
208 | 208 | // \ref{range.take.while}, take while view
|
209 |
| - template<view R, class Pred> |
210 |
| - requires input_range<R> && is_object_v<Pred> && |
211 |
| - indirect_unary_predicate<const Pred, iterator_t<R>> |
| 209 | + template<view V, class Pred> |
| 210 | + requires input_range<V> && is_object_v<Pred> && |
| 211 | + indirect_unary_predicate<const Pred, iterator_t<V>> |
212 | 212 | class take_while_view;
|
213 | 213 |
|
214 | 214 | namespace views { inline constexpr @\unspec@ take_while = @\unspec@; }
|
215 | 215 |
|
216 | 216 | // \ref{range.drop}, drop view
|
217 |
| - template<view R> |
| 217 | + template<view V> |
218 | 218 | class drop_view;
|
219 | 219 |
|
220 | 220 | namespace views { inline constexpr @\unspec@ drop = @\unspec@; }
|
221 | 221 |
|
222 | 222 | // \ref{range.drop.while}, drop while view
|
223 |
| - template<view R, class Pred> |
224 |
| - requires input_range<R> && is_object_v<Pred> && |
225 |
| - indirect_unary_predicate<const Pred, iterator_t<R>> |
| 223 | + template<view V, class Pred> |
| 224 | + requires input_range<V> && is_object_v<Pred> && |
| 225 | + indirect_unary_predicate<const Pred, iterator_t<V>> |
226 | 226 | class drop_while_view;
|
227 | 227 |
|
228 | 228 | namespace views { inline constexpr @\unspec@ drop_while = @\unspec@; }
|
|
266 | 266 | namespace views { inline constexpr @\unspec@ reverse = @\unspec@; }
|
267 | 267 |
|
268 | 268 | // \ref{range.elements}, elements view
|
269 |
| - template<input_range R, size_t N> |
| 269 | + template<input_range V, size_t N> |
270 | 270 | requires @\seebelow@;
|
271 | 271 | class elements_view;
|
272 | 272 |
|
|
4329 | 4329 | \indexlibrarymember{end}{take_while_view}%
|
4330 | 4330 | \begin{codeblock}
|
4331 | 4331 | namespace std::ranges {
|
4332 |
| - template<view R, class Pred> |
4333 |
| - requires input_range<R> && is_object_v<Pred> && |
4334 |
| - indirect_unary_predicate<const Pred, iterator_t<R>> |
4335 |
| - class take_while_view : public view_interface<take_while_view<R, Pred>> { |
| 4332 | + template<view V, class Pred> |
| 4333 | + requires input_range<V> && is_object_v<Pred> && |
| 4334 | + indirect_unary_predicate<const Pred, iterator_t<V>> |
| 4335 | + class take_while_view : public view_interface<take_while_view<V, Pred>> { |
4336 | 4336 | template<bool> class sentinel; // \expos
|
4337 | 4337 |
|
4338 |
| - R base_; // \expos |
| 4338 | + V base_; // \expos |
4339 | 4339 | @\placeholder{semiregular-box}@<Pred> pred_; @\itcorr[-1]@ // \expos
|
4340 | 4340 |
|
4341 | 4341 | public:
|
4342 | 4342 | take_while_view() = default;
|
4343 |
| - constexpr take_while_view(R base, Pred pred); |
| 4343 | + constexpr take_while_view(V base, Pred pred); |
4344 | 4344 |
|
4345 |
| - constexpr R base() const& requires copy_constructible<R> { return base_; } |
4346 |
| - constexpr R base() && { return std::move(base_); } |
| 4345 | + constexpr V base() const& requires copy_constructible<V> { return base_; } |
| 4346 | + constexpr V base() && { return std::move(base_); } |
4347 | 4347 |
|
4348 | 4348 | constexpr const Pred& pred() const;
|
4349 | 4349 |
|
4350 |
| - constexpr auto begin() requires (!@\placeholder{simple-view}@<R>) |
| 4350 | + constexpr auto begin() requires (!@\placeholder{simple-view}@<V>) |
4351 | 4351 | { return ranges::begin(base_); }
|
4352 | 4352 |
|
4353 |
| - constexpr auto begin() const requires range<const R> |
| 4353 | + constexpr auto begin() const requires range<const V> |
4354 | 4354 | { return ranges::begin(base_); }
|
4355 | 4355 |
|
4356 |
| - constexpr auto end() requires (!@\placeholder{simple-view}@<R>) |
| 4356 | + constexpr auto end() requires (!@\placeholder{simple-view}@<V>) |
4357 | 4357 | { return sentinel<false>(ranges::end(base_), addressof(*pred_)); }
|
4358 | 4358 |
|
4359 |
| - constexpr auto end() const requires range<const R> |
| 4359 | + constexpr auto end() const requires range<const V> |
4360 | 4360 | { return sentinel<true>(ranges::end(base_), addressof(*pred_)); }
|
4361 | 4361 | };
|
4362 | 4362 |
|
|
4367 | 4367 |
|
4368 | 4368 | \indexlibraryctor{take_while_view}%
|
4369 | 4369 | \begin{itemdecl}
|
4370 |
| -constexpr take_while_view(R base, Pred pred); |
| 4370 | +constexpr take_while_view(V base, Pred pred); |
4371 | 4371 | \end{itemdecl}
|
4372 | 4372 |
|
4373 | 4373 | \begin{itemdescr}
|
|
4427 | 4427 | \indexlibraryctor{take_while_view::sentinel}%
|
4428 | 4428 | \begin{itemdecl}
|
4429 | 4429 | constexpr sentinel(sentinel<!Const> s)
|
4430 |
| - requires Const && convertible_to<sentinel_t<R>, sentinel_t<base_t>>; |
| 4430 | + requires Const && convertible_to<sentinel_t<V>, sentinel_t<base_t>>; |
4431 | 4431 | \end{itemdecl}
|
4432 | 4432 |
|
4433 | 4433 | \begin{itemdescr}
|
|
4487 | 4487 | \indexlibrarymember{size}{drop_view}%
|
4488 | 4488 | \begin{codeblock}
|
4489 | 4489 | namespace std::ranges {
|
4490 |
| - template<view R> |
4491 |
| - class drop_view : public view_interface<drop_view<R>> { |
| 4490 | + template<view V> |
| 4491 | + class drop_view : public view_interface<drop_view<V>> { |
4492 | 4492 | public:
|
4493 | 4493 | drop_view() = default;
|
4494 |
| - constexpr drop_view(R base, range_difference_t<R> count); |
| 4494 | + constexpr drop_view(V base, range_difference_t<V> count); |
4495 | 4495 |
|
4496 |
| - constexpr R base() const& requires copy_constructible<R> { return base_; } |
4497 |
| - constexpr R base() && { return std::move(base_); } |
| 4496 | + constexpr V base() const& requires copy_constructible<V> { return base_; } |
| 4497 | + constexpr V base() && { return std::move(base_); } |
4498 | 4498 |
|
4499 | 4499 | constexpr auto begin()
|
4500 |
| - requires (!(@\placeholder{simple-view}@<R> && random_access_range<R>)); |
| 4500 | + requires (!(@\placeholder{simple-view}@<V> && random_access_range<V>)); |
4501 | 4501 | constexpr auto begin() const
|
4502 |
| - requires random_access_range<const R>; |
| 4502 | + requires random_access_range<const V>; |
4503 | 4503 |
|
4504 | 4504 | constexpr auto end()
|
4505 |
| - requires (!@\placeholder{simple-view}@<R>) |
| 4505 | + requires (!@\placeholder{simple-view}@<V>) |
4506 | 4506 | { return ranges::end(base_); }
|
4507 | 4507 |
|
4508 | 4508 | constexpr auto end() const
|
4509 |
| - requires range<const R> |
| 4509 | + requires range<const V> |
4510 | 4510 | { return ranges::end(base_); }
|
4511 | 4511 |
|
4512 | 4512 | constexpr auto size()
|
4513 |
| - requires sized_range<R> |
| 4513 | + requires sized_range<V> |
4514 | 4514 | {
|
4515 | 4515 | const auto s = ranges::size(base_);
|
4516 | 4516 | const auto c = static_cast<decltype(s)>(count_);
|
4517 | 4517 | return s < c ? 0 : s - c;
|
4518 | 4518 | }
|
4519 | 4519 |
|
4520 | 4520 | constexpr auto size() const
|
4521 |
| - requires sized_range<const R> |
| 4521 | + requires sized_range<const V> |
4522 | 4522 | {
|
4523 | 4523 | const auto s = ranges::size(base_);
|
4524 | 4524 | const auto c = static_cast<decltype(s)>(count_);
|
4525 | 4525 | return s < c ? 0 : s - c;
|
4526 | 4526 | }
|
4527 | 4527 | private:
|
4528 |
| - R base_; // \expos |
4529 |
| - range_difference_t<R> count_; // \expos |
| 4528 | + V base_; // \expos |
| 4529 | + range_difference_t<V> count_; // \expos |
4530 | 4530 | };
|
4531 | 4531 |
|
4532 | 4532 | template<class R>
|
|
4536 | 4536 |
|
4537 | 4537 | \indexlibraryctor{drop_view}%
|
4538 | 4538 | \begin{itemdecl}
|
4539 |
| -constexpr drop_view(R base, range_difference_t<R> count); |
| 4539 | +constexpr drop_view(V base, range_difference_t<V> count); |
4540 | 4540 | \end{itemdecl}
|
4541 | 4541 |
|
4542 | 4542 | \begin{itemdescr}
|
|
4553 | 4553 | \indexlibrarymember{begin}{drop_view}%
|
4554 | 4554 | \begin{itemdecl}
|
4555 | 4555 | constexpr auto begin()
|
4556 |
| - requires (!(@\placeholder{simple-view}@<R> && random_access_range<R>)); |
| 4556 | + requires (!(@\placeholder{simple-view}@<V> && random_access_range<V>)); |
4557 | 4557 | constexpr auto begin() const
|
4558 |
| - requires random_access_range<const R>; |
| 4558 | + requires random_access_range<const V>; |
4559 | 4559 | \end{itemdecl}
|
4560 | 4560 |
|
4561 | 4561 | \begin{itemdescr}
|
|
4614 | 4614 | \indexlibrarymember{end}{drop_while_view}%
|
4615 | 4615 | \begin{codeblock}
|
4616 | 4616 | namespace std::ranges {
|
4617 |
| - template<view R, class Pred> |
4618 |
| - requires input_range<R> && is_object_v<Pred> && |
4619 |
| - indirect_unary_predicate<const Pred, iterator_t<R>> |
4620 |
| - class drop_while_view : public view_interface<drop_while_view<R, Pred>> { |
| 4617 | + template<view V, class Pred> |
| 4618 | + requires input_range<V> && is_object_v<Pred> && |
| 4619 | + indirect_unary_predicate<const Pred, iterator_t<V>> |
| 4620 | + class drop_while_view : public view_interface<drop_while_view<V, Pred>> { |
4621 | 4621 | public:
|
4622 | 4622 | drop_while_view() = default;
|
4623 |
| - constexpr drop_while_view(R base, Pred pred); |
| 4623 | + constexpr drop_while_view(V base, Pred pred); |
4624 | 4624 |
|
4625 |
| - constexpr R base() const& requires copy_constructible<R> { return base_; } |
4626 |
| - constexpr R base() && { return std::move(base_); } |
| 4625 | + constexpr V base() const& requires copy_constructible<V> { return base_; } |
| 4626 | + constexpr V base() && { return std::move(base_); } |
4627 | 4627 |
|
4628 | 4628 | constexpr const Pred& pred() const;
|
4629 | 4629 |
|
|
4633 | 4633 | { return ranges::end(base_); }
|
4634 | 4634 |
|
4635 | 4635 | private:
|
4636 |
| - R base_; // \expos |
| 4636 | + V base_; // \expos |
4637 | 4637 | @\placeholder{semiregular-box}@<Pred> pred_; @\itcorr[-1]@ // \expos
|
4638 | 4638 | };
|
4639 | 4639 |
|
|
4644 | 4644 |
|
4645 | 4645 | \indexlibraryctor{drop_while_view}%
|
4646 | 4646 | \begin{itemdecl}
|
4647 |
| -constexpr drop_while_view(R base, Pred pred); |
| 4647 | +constexpr drop_while_view(V base, Pred pred); |
4648 | 4648 | \end{itemdecl}
|
4649 | 4649 |
|
4650 | 4650 | \begin{itemdescr}
|
|
6132 | 6132 | };
|
6133 | 6133 |
|
6134 | 6134 |
|
6135 |
| - template<input_range R, size_t N> |
6136 |
| - requires view<R> && @\placeholder{has-tuple-element}@<range_value_t<R>, N> && |
6137 |
| - @\placeholder{has-tuple-element}@<remove_reference_t<range_reference_t<R>>, N> |
6138 |
| - class elements_view : public view_interface<elements_view<R, N>> { |
| 6135 | + template<input_range V, size_t N> |
| 6136 | + requires view<V> && @\placeholder{has-tuple-element}@<range_value_t<V>, N> && |
| 6137 | + @\placeholder{has-tuple-element}@<remove_reference_t<range_reference_t<V>>, N> |
| 6138 | + class elements_view : public view_interface<elements_view<V, N>> { |
6139 | 6139 | public:
|
6140 | 6140 | elements_view() = default;
|
6141 |
| - constexpr explicit elements_view(R base); |
| 6141 | + constexpr explicit elements_view(V base); |
6142 | 6142 |
|
6143 |
| - constexpr R base() const& requires copy_constructible<R> { return base_; } |
6144 |
| - constexpr R base() && { return std::move(base_); } |
| 6143 | + constexpr V base() const& requires copy_constructible<V> { return base_; } |
| 6144 | + constexpr V base() && { return std::move(base_); } |
6145 | 6145 |
|
6146 |
| - constexpr auto begin() requires (!@\placeholder{simple-view}@<R>) |
| 6146 | + constexpr auto begin() requires (!@\placeholder{simple-view}@<V>) |
6147 | 6147 | { return iterator<false>(ranges::begin(base_)); }
|
6148 | 6148 |
|
6149 |
| - constexpr auto begin() const requires @\placeholder{simple-view}@<R> |
| 6149 | + constexpr auto begin() const requires @\placeholder{simple-view}@<V> |
6150 | 6150 | { return iterator<true>(ranges::begin(base_)); }
|
6151 | 6151 |
|
6152 |
| - constexpr auto end() requires (!@\placeholder{simple-view}@<R>) |
| 6152 | + constexpr auto end() requires (!@\placeholder{simple-view}@<V>) |
6153 | 6153 | { return ranges::end(base_); }
|
6154 | 6154 |
|
6155 |
| - constexpr auto end() const requires @\placeholder{simple-view}@<R> |
| 6155 | + constexpr auto end() const requires @\placeholder{simple-view}@<V> |
6156 | 6156 | { return ranges::end(base_); }
|
6157 | 6157 |
|
6158 |
| - constexpr auto size() requires sized_range<R> |
| 6158 | + constexpr auto size() requires sized_range<V> |
6159 | 6159 | { return ranges::size(base_); }
|
6160 | 6160 |
|
6161 |
| - constexpr auto size() const requires sized_range<const R> |
| 6161 | + constexpr auto size() const requires sized_range<const V> |
6162 | 6162 | { return ranges::size(base_); }
|
6163 | 6163 |
|
6164 | 6164 | private:
|
6165 | 6165 | template<bool> struct iterator; // \expos
|
6166 |
| - R base_ = R(); // \expos |
| 6166 | + V base_ = V(); // \expos |
6167 | 6167 | };
|
6168 | 6168 | }
|
6169 | 6169 | \end{codeblock}
|
6170 | 6170 |
|
6171 | 6171 | \indexlibraryctor{elements_view}%
|
6172 | 6172 | \begin{itemdecl}
|
6173 |
| -constexpr explicit elements_view(R base); |
| 6173 | +constexpr explicit elements_view(V base); |
6174 | 6174 | \end{itemdecl}
|
6175 | 6175 |
|
6176 | 6176 | \begin{itemdescr}
|
|
6184 | 6184 | \indexlibraryglobal{elements_view::iterator}%
|
6185 | 6185 | \begin{codeblock}
|
6186 | 6186 | namespace std::ranges {
|
6187 |
| - template<class R, size_t N> |
| 6187 | + template<class V, size_t N> |
6188 | 6188 | template<bool Const>
|
6189 |
| - class elements_view<R, N>::iterator { // \expos |
6190 |
| - using base_t = conditional_t<Const, const R, R>; |
| 6189 | + class elements_view<V, N>::iterator { // \expos |
| 6190 | + using base_t = conditional_t<Const, const V, V>; |
6191 | 6191 | friend iterator<!Const>;
|
6192 | 6192 |
|
6193 | 6193 | iterator_t<base_t> current_;
|
|
6199 | 6199 | iterator() = default;
|
6200 | 6200 | constexpr explicit iterator(iterator_t<base_t> current);
|
6201 | 6201 | constexpr iterator(iterator<!Const> i)
|
6202 |
| - requires Const && convertible_to<iterator_t<R>, iterator_t<base_t>>; |
| 6202 | + requires Const && convertible_to<iterator_t<V>, iterator_t<base_t>>; |
6203 | 6203 |
|
6204 | 6204 | constexpr iterator_t<base_t> base() const &
|
6205 | 6205 | requires copyable<iterator_t<base_t>>;
|
|
6273 | 6273 | \indexlibraryctor{elements_view::iterator}%
|
6274 | 6274 | \begin{itemdecl}
|
6275 | 6275 | constexpr iterator(iterator<!Const> i)
|
6276 |
| - requires Const && convertible_to<iterator_t<R>, iterator_t<base_t>>; |
| 6276 | + requires Const && convertible_to<iterator_t<V>, iterator_t<base_t>>; |
6277 | 6277 | \end{itemdecl}
|
6278 | 6278 |
|
6279 | 6279 | \begin{itemdescr}
|
|
0 commit comments