std::ranges::repeat_view<W, Bound>::iterator
| struct /*iterator*/; |
(1) | (since C++23) |
| Helper alias templates |
||
| template< class I > using /*iota-diff-t*/ = /* see below */; // exposition only |
(2) | (since C++20) |
iota-diff-t calculates the difference type for both iterator types and integer-like types.
- If
Wis not an integral type, or if it is an integral type and sizeof(std::iter_difference_t<I>) is greater than sizeof(I), then /*iota-diff-t*/<I> is std::iter_difference_t<I>. - Otherwise, /*iota-diff-t*/<I> is a signed integer type of width greater than the width of
Iif such a type exists. - Otherwise,
Iis one of the widest integral types, and /*iota-diff-t*/<I> is an unspecified signed-integer-like type of width not less than the width ofI. It is unspecified whether /*iota-diff-t*/<I> modelsweakly_incrementablein this case.
[edit] Member types
| Member type | Definition |
index-type (private)
|
The name is for exposition only. |
iterator_concept
|
std::random_access_iterator_tag |
iterator_category
|
std::random_access_iterator_tag |
value_type
|
W |
difference_type
|
|
[edit] Data members
Typical implementation of this iterator type contains two data members:
-
value_of type const W* that holds the pointer to the value to repeat; -
current_of type /*index-type*/ that holds the current position.
These names are exposition only.
[edit] Member functions
std::ranges::repeat_view::iterator::iterator
| /*iterator*/() = default; |
(1) | (since C++23) |
| constexpr explicit /*iterator*/( // exposition only const W* value, /*index-type*/ b = /*index-type*/() ); |
(2) | (since C++23) |
-
value_with nullptr_t via its default member initializer; -
index_via its default member initializer (= /*index-type*/()).
value_ with value and bound_ with b. If Bound is not std::unreachable_sentinel_t then b must be non-negative. This constructor is not a part of the public interface.
std::ranges::repeat_view::iterator::operator*
| constexpr const W& operator*() const noexcept; |
(since C++23) | |
Equivalent to return *value_;.
std::ranges::repeat_view::iterator::operator++
| constexpr /*iterator*/& operator++(); |
(1) | (since C++23) |
| constexpr void operator++(int); |
(2) | (since C++23) |
std::ranges::repeat_view::iterator::operator--
| constexpr /*iterator*/& operator--(); |
(1) | (since C++23) |
| constexpr /*iterator*/ operator--(int); |
(2) | (since C++23) |
bound_ must be positive.std::ranges::repeat_view::iterator::operator+=
| constexpr /*iterator*/& operator+=( difference_type n ); |
(since C++23) | |
Equivalent to current_ += n; return *this;. If Bound is not std::unreachable_sentinel_t then (bound_ + n) must be non-negative.
std::ranges::repeat_view::iterator::operator-=
| constexpr /*iterator*/& operator-=( difference_type n ); |
(since C++23) | |
Equivalent to current_ -= n; return *this;. If Bound is not std::unreachable_sentinel_t, then (bound_ - n) must be non-negative.
std::ranges::repeat_view::iterator::operator[]
| constexpr const W& operator[]( difference_type n ) const noexcept; |
(since C++23) | |
Equivalent to return *(*this + n);.
[edit] Non-member functions
operator==, <=>(std::ranges::repeat_view::iterator)
| friend constexpr bool operator==( const /*iterator*/& x, const /*iterator*/& y ); |
(1) | (since C++23) |
| friend constexpr auto operator<=>( const /*iterator*/& x, const /*iterator*/& y ); |
(2) | (since C++23) |
The != operator is synthesized from operator==.
These functions are not visible to ordinary unqualified or qualified lookup, and can only be found by argument-dependent lookup when iterator is an associated class of the arguments.
operator+(std::ranges::repeat_view::iterator)
| friend constexpr /*iterator*/ operator+( /*iterator*/ i, difference_type n ); |
(1) | (since C++23) |
| friend constexpr /*iterator*/ operator+( difference_type n, /*iterator*/ i ); |
(2) | (since C++23) |
Equivalent to i += n; return i;.
These functions are not visible to ordinary unqualified or qualified lookup, and can only be found by argument-dependent lookup when iterator is an associated class of the arguments.
operator-(std::ranges::repeat_view::iterator)
| friend constexpr /*iterator*/ operator-( /*iterator*/ i, difference_type n ); |
(1) | (since C++23) |
| friend constexpr difference_type operator-( const /*iterator*/& x, const /*iterator*/& y ); |
(2) | (since C++23) |
These functions are not visible to ordinary unqualified or qualified lookup, and can only be found by argument-dependent lookup when iterator is an associated class of the arguments.
[edit] Notes
iterator is always random_access_iterator.