Files
2025-10-25 03:02:53 +03:00

6.7 KiB
Raw Permalink Blame History

[range.repeat.view]

25 Ranges library [ranges]

25.6 Range factories [range.factories]

25.6.5 Repeat view [range.repeat]

25.6.5.2 Class template repeat_view [range.repeat.view]

namespace std::ranges {templateconcept integer-like-with-usable-difference-type = // exposition only**is-signed-integer-like || (is-integer-like && weakly_incrementable); template<move_constructible T, semiregular Bound = unreachable_sentinel_t>requires (is_object_v && same_as<T, remove_cv_t> &&(integer-like-with-usable-difference-type ||same_as<Bound, unreachable_sentinel_t>))class repeat_view : public view_interface<repeat_view<T, Bound>> {private:// [range.repeat.iterator], class repeat_view::iteratorstruct iterator; // exposition only**movable-box value_; // exposition only, see [range.move.wrap] Bound bound_ = Bound(); // exposition onlypublic: repeat_view() requires default_initializable = default; constexpr explicit repeat_view(const T& value, Bound bound = Bound())requires copy_constructible; constexpr explicit repeat_view(T&& value, Bound bound = Bound()); template<class... TArgs, class... BoundArgs>requires constructible_from<T, TArgs...> &&constructible_from<Bound, BoundArgs...>constexpr explicit repeat_view(piecewise_construct_t, tuple<TArgs...> value_args, tuple<BoundArgs...> bound_args = tuple<>{}); constexpr iterator begin() const; constexpr iterator end() const requires (same_as<Bound, unreachable_sentinel_t>); constexpr unreachable_sentinel_t end() const noexcept; constexpr auto size() const requires (same_as<Bound, unreachable_sentinel_t>); }; template<class T, class Bound = unreachable_sentinel_t> repeat_view(T, Bound = Bound()) -> repeat_view<T, Bound>;}

🔗

constexpr explicit repeat_view(const T& value, Bound bound = Bound()) requires [copy_constructible](concept.copyconstructible#concept:copy_constructible "18.4.14Concept copy_­constructible[concept.copyconstructible]")<T>;

1

#

Preconditions: If Bound is not unreachable_sentinel_t,bound ≥ 0.

2

#

Effects: Initializes value_ with value andbound_ with bound.

🔗

constexpr explicit repeat_view(T&& value, Bound bound = Bound());

3

#

Preconditions: If Bound is not unreachable_sentinel_t, bound ≥ 0.

4

#

Effects: Initializes value_ with std::move(value) andbound_ with bound.

🔗

template<class... TArgs, class... BoundArgs> requires [constructible_from](concept.constructible#concept:constructible_from "18.4.11Concept constructible_­from[concept.constructible]")<T, TArgs...> && [constructible_from](concept.constructible#concept:constructible_from "18.4.11Concept constructible_­from[concept.constructible]")<Bound, BoundArgs...> constexpr explicit repeat_view(piecewise_construct_t, tuple<TArgs...> value_args, tuple<BoundArgs...> bound_args = tuple<>{});

5

#

Effects: Initializes value_ withmake_from_tuple(std::move(value_args)) and initializes bound_ withmake_from_tuple(std::move(bound_args)).

The behavior is undefined ifBound is not unreachable_sentinel_t andbound_ is negative.

🔗

constexpr iterator begin() const;

6

#

Effects: Equivalent to: return iterator(addressof(**value_*));

🔗

constexpr iterator end() const requires (![same_as](concept.same#concept:same_as "18.4.2Concept same_­as[concept.same]")<Bound, unreachable_sentinel_t>);

7

#

Effects: Equivalent to: return iterator(addressof(**value_*), bound_);

🔗

constexpr unreachable_sentinel_t end() const noexcept;

8

#

Effects: Equivalent to: return unreachable_sentinel;

🔗

constexpr auto size() const requires (![same_as](concept.same#concept:same_as "18.4.2Concept same_­as[concept.same]")<Bound, unreachable_sentinel_t>);

9

#

Effects: Equivalent to: return to-unsigned-like(bound_);