|
190 | 190 | namespace views { inline constexpr @\unspecnc@ iota = @\unspecnc@; } // freestanding
|
191 | 191 |
|
192 | 192 | // \ref{range.repeat}, repeat view
|
193 |
| - template<@\libconcept{copy_constructible}@ W, @\libconcept{semiregular}@ Bound = unreachable_sentinel_t> |
| 193 | + template<@\libconcept{move_constructible}@ W, @\libconcept{semiregular}@ Bound = unreachable_sentinel_t> |
194 | 194 | requires (is_object_v<W> && @\libconcept{same_as}@<W, remove_cv_t<W>>
|
195 | 195 | && (@\exposid{is-integer-like}@<Bound> || @\libconcept{same_as}@<Bound, unreachable_sentinel_t>))
|
196 | 196 | class repeat_view;
|
|
3365 | 3365 |
|
3366 | 3366 | \begin{codeblock}
|
3367 | 3367 | namespace std::ranges {
|
3368 |
| - template<@\libconcept{copy_constructible}@ W, @\libconcept{semiregular}@ Bound = unreachable_sentinel_t> |
| 3368 | + template<@\libconcept{move_constructible}@ W, @\libconcept{semiregular}@ Bound = unreachable_sentinel_t> |
3369 | 3369 | requires (is_object_v<W> && @\libconcept{same_as}@<W, remove_cv_t<W>> &&
|
3370 | 3370 | (@\exposid{is-integer-like}@<Bound> || @\libconcept{same_as}@<Bound, unreachable_sentinel_t>))
|
3371 | 3371 | class @\libglobal{repeat_view}@ : public view_interface<repeat_view<W, Bound>> {
|
3372 | 3372 | private:
|
3373 | 3373 | // \ref{range.repeat.iterator}, class \tcode{range_view::\exposid{iterator}}
|
3374 | 3374 | struct @\exposid{iterator}@; // \expos
|
3375 | 3375 |
|
3376 |
| - @\exposid{copyable-box}@<W> @\exposid{value_}@ = W(); // \expos, see \ref{range.copy.wrap} |
| 3376 | + @\exposid{movable-box}@<W> @\exposid{value_}@ = W(); // \expos, see \ref{range.move.wrap} |
3377 | 3377 | Bound @\exposid{bound_}@ = Bound(); // \expos
|
3378 | 3378 |
|
3379 | 3379 | public:
|
3380 | 3380 | repeat_view() requires @\libconcept{default_initializable}@<W> = default;
|
3381 | 3381 |
|
3382 |
| - constexpr explicit repeat_view(const W& value, Bound bound = Bound()); |
| 3382 | + constexpr explicit repeat_view(const W& value, Bound bound = Bound()) |
| 3383 | + requires @\libconcept{copy_constructible}@<W>; |
3383 | 3384 | constexpr explicit repeat_view(W&& value, Bound bound = Bound());
|
3384 | 3385 | template<class... WArgs, class... BoundArgs>
|
3385 | 3386 | requires @\libconcept{constructible_from}@<W, WArgs...> &&
|
|
3500 | 3501 |
|
3501 | 3502 | \begin{codeblock}
|
3502 | 3503 | namespace std::ranges {
|
3503 |
| - template<@\libconcept{copy_constructible}@ W, @\libconcept{semiregular}@ Bound = unreachable_sentinel_t> |
| 3504 | + template<@\libconcept{move_constructible}@ W, @\libconcept{semiregular}@ Bound = unreachable_sentinel_t> |
3504 | 3505 | requires (is_object_v<W> && @\libconcept{same_as}@<W, remove_cv_t<W>> &&
|
3505 | 3506 | (@\exposid{is-integer-like}@<Bound> || @\libconcept{same_as}@<Bound, unreachable_sentinel_t>))
|
3506 | 3507 | class repeat_view<W, Bound>::@\exposid{iterator}@ {
|
|
0 commit comments