namespace std::ranges {
template<move_constructible T, semiregular Bound = unreachable_sentinel_t>
requires (is_object_v<T> && same_as<T, remove_cv_t<T>> &&
(is-integer-like<Bound> || same_as<Bound, unreachable_sentinel_t>))
class repeat_view : public view_interface<repeat_view<T, Bound>> { …… }; // (1)
namespace views {
inline constexpr /*unspecified*/ repeat = /*unspecified*/; // (2)
}
}
概要
- (1): 指定した値を指定回数繰り返す
view
- (2):
repeat_view
を生成するカスタマイゼーションポイントオブジェクト
回数を省略した場合、無限長となる。
Rangeコンセプト
borrowed | sized | output | input | forward | bidirectional | random_access | contiguous | common | viewable | view |
---|---|---|---|---|---|---|---|---|---|---|
(1) | ○ | ○ | ○ | ○ | (1) | ○ | ○ |
- (1)
Bound = unreachable_sentinel_t
ではない場合
効果
- 式
views::repeat(E)
の効果はrepeat_view(E)
と等しい。 - 式
views::repeat(E, F)
の効果はrepeat_view(E, F)
と等しい。
メンバ関数
名前 | 説明 | 対応バージョン |
---|---|---|
(constructor) |
コンストラクタ | C++23 |
begin |
先頭を指すイテレータを取得する | C++23 |
end |
番兵を取得する | C++23 |
size |
配列の先頭へのポインタを取得する | C++23 |
継承しているメンバ関数
名前 | 説明 | 対応バージョン |
---|---|---|
operator bool |
Rangeが空でないかどうかを判定する | C++23 |
front |
先頭要素への参照を取得する | C++23 |
back |
末尾要素への参照を取得する | C++23 |
operator[] |
要素へアクセスする | C++23 |
メンバ型
名前 | 説明 | 対応バージョン |
---|---|---|
iterator |
イテレータ型(説明専用) | C++23 |
推論補助
名前 | 説明 | 対応バージョン |
---|---|---|
(deduction_guide) |
クラステンプレートの推論補助 | C++23 |
例
#include <ranges>
#include <iostream>
int main() {
using namespace std;
for(int n : views::repeat(42, 3)) {
cout << n << ' ';
}
}
出力
42 42 42
バージョン
言語
- C++23
処理系
- Clang: ?
- GCC: ?
- ICC: ?
- Visual C++: ?