File tree Expand file tree Collapse file tree 6 files changed +310
-5
lines changed
Expand file tree Collapse file tree 6 files changed +310
-5
lines changed Original file line number Diff line number Diff line change @@ -51,10 +51,10 @@ namespace std::ranges {
5151
5252| 名前 | 説明 | 対応バージョン |
5353|--------------------------------------------------|----------------------------------|----------------|
54- | [`(constructor)`](join_view/op_constructor.md.nolink ) | コンストラクタ | C++20 |
55- | [`base`](join_view/base.md.nolink ) | `V`の参照を取得する | C++20 |
56- | [`begin`](join_view/begin.md.nolink ) | 先頭を指すイテレータを取得する | C++20 |
57- | [`end`](join_view/end.md.nolink ) | 番兵を取得する | C++20 |
54+ | [`(constructor)`](join_view/op_constructor.md) | コンストラクタ | C++20 |
55+ | [`base`](join_view/base.md) | `V`の参照を取得する | C++20 |
56+ | [`begin`](join_view/begin.md) | 先頭を指すイテレータを取得する | C++20 |
57+ | [`end`](join_view/end.md) | 番兵を取得する | C++20 |
5858
5959## 継承しているメンバ関数
6060
@@ -71,7 +71,7 @@ namespace std::ranges {
7171
7272| 名前 | 説明 | 対応バージョン |
7373|-------------------------------------------------------|------------------------------|----------------|
74- | [`(deduction_guide)`](join_view/op_deduction_guide.md.nolink ) | クラステンプレートの推論補助 | C++20 |
74+ | [`(deduction_guide)`](join_view/op_deduction_guide.md) | クラステンプレートの推論補助 | C++20 |
7575
7676## 例
7777```cpp example
Original file line number Diff line number Diff line change 1+ # base
2+ * ranges[ meta header]
3+ * std::ranges[ meta namespace]
4+ * join_view[ meta class]
5+ * function[ meta id-type]
6+ * cpp20[ meta cpp]
7+
8+ ``` cpp
9+ constexpr V base () const &
10+ requires copy_constructible<V>; // (1) C++20
11+
12+ constexpr V base () &&; // (2) C++20
13+ ```
14+
15+ ## 概要
16+
17+ メンバ変数として保持している、元の` view ` を取得する。
18+
19+ ## 効果
20+
21+ 入力` view ` (` V ` )のオブジェクトを` base_ ` というメンバに保持するとして
22+
23+ - (1) : ` return base_; ` と等価
24+ - (2) : ` return std::move(base_); ` と等価
25+
26+ ## 例
27+
28+ ``` cpp example
29+ #include < ranges>
30+ #include < vector>
31+ #include < string>
32+ #include < iostream>
33+
34+ int main () {
35+ using std::ranges::view;
36+
37+ std::vector< std::string > words = {"hello", "world", "join"};
38+
39+ std::ranges::join_view r{words};
40+
41+ // (1) コピーして取得
42+ view auto b1 = r.base();
43+
44+ // (2) ムーブして取得
45+ view auto b2 = std::move(r).base();
46+
47+ // 得られるのは元のRangeではなく、あくまでview
48+ static_assert (not std::same_as<decltype(b1), std::vector< std::string > >);
49+ static_assert ( std::same_as<decltype(b1), std::ranges::ref_view< std::vector<std::string > >>);
50+ static_assert ( std::same_as<decltype(b2), std::ranges::ref_view< std::vector<std::string > >>);
51+ }
52+ ```
53+ * base[ color ff0000]
54+
55+ ### 出力
56+
57+ ```
58+ ```
59+
60+ ## バージョン
61+ ### 言語
62+ - C++20
63+
64+ ### 処理系
65+ - [ Clang] ( /implementation.md#clang ) : 13.0.0 [ mark verified]
66+ - [ GCC] ( /implementation.md#gcc ) : 10.1.0 [ mark verified]
67+ - [ ICC] ( /implementation.md#icc ) : ?
68+ - [ Visual C++] ( /implementation.md#visual_cpp ) : 2019 Update 10 [ mark verified]
Original file line number Diff line number Diff line change 1+ # begin
2+ * ranges[ meta header]
3+ * std::ranges[ meta namespace]
4+ * join_view[ meta class]
5+ * function[ meta id-type]
6+ * cpp20[ meta cpp]
7+
8+ ``` cpp
9+ constexpr auto begin ()
10+ requires (!simple-view<V >); // (1) C++20
11+
12+ constexpr auto begin() const
13+ requires range<const V > &&
14+ input_range<range_reference_t<const V >>; // (2) C++20
15+ ```
16+
17+ ## 概要
18+
19+ `view`の先頭要素を指すイテレータを取得する。
20+
21+ ## 戻り値
22+ - (1), (2) : `join_view`の先頭を指すイテレータを返す。外側のRangeが空でない場合、最初の内側Rangeの先頭要素を指す。外側のRangeが空の場合、[`end()`](end.md)と等価なイテレータを返す。
23+
24+ ## 例
25+
26+ ```cpp example
27+ #include <ranges>
28+ #include <vector>
29+ #include <string>
30+ #include <iostream>
31+
32+ int main() {
33+ std::vector<std::string> words = {"hello", "world", "join"};
34+
35+ std::ranges::join_view r{words};
36+
37+ auto it = r.begin();
38+
39+ char x = *it;
40+ std::cout << x << '\n';
41+ }
42+ ```
43+ * begin[ color ff0000]
44+
45+ ### 出力
46+
47+ ```
48+ h
49+ ```
50+
51+ ## バージョン
52+ ### 言語
53+ - C++20
54+
55+ ### 処理系
56+ - [ Clang] ( /implementation.md#clang ) : 13.0.0 [ mark verified]
57+ - [ GCC] ( /implementation.md#gcc ) : 10.1.0 [ mark verified]
58+ - [ ICC] ( /implementation.md#icc ) : ?
59+ - [ Visual C++] ( /implementation.md#visual_cpp ) : 2019 Update 10 [ mark verified]
Original file line number Diff line number Diff line change 1+ # end
2+ * ranges[ meta header]
3+ * std::ranges[ meta namespace]
4+ * join_view[ meta class]
5+ * function[ meta id-type]
6+ * cpp20[ meta cpp]
7+
8+ ``` cpp
9+ constexpr auto end ()
10+ requires (!simple-view<V >); // (1) C++20
11+
12+ constexpr auto end() const
13+ requires range<const V > &&
14+ input_range<range_reference_t<const V >>; // (2) C++20
15+ ```
16+
17+ ## 概要
18+ 番兵を取得する。
19+
20+ ## 戻り値
21+ - (1), (2) : `join_view`の番兵を返す
22+
23+ ## 例
24+
25+ ```cpp example
26+ #include <ranges>
27+ #include <vector>
28+ #include <string>
29+ #include <iostream>
30+
31+ int main() {
32+ std::vector<std::string> words = {"hello", "world", "join"};
33+
34+ std::ranges::join_view r{words};
35+
36+ auto it = r.begin();
37+ auto end_it = r.end();
38+ while (it != end_it) {
39+ char x = *it;
40+ std::cout << x;
41+ ++it;
42+ }
43+ std::cout << std::endl;
44+ }
45+ ```
46+ * end[ color ff0000]
47+ * begin[ link begin.md]
48+
49+ ### 出力
50+
51+ ```
52+ helloworldjoin
53+ ```
54+
55+ ## バージョン
56+ ### 言語
57+ - C++20
58+
59+ ### 処理系
60+ - [ Clang] ( /implementation.md#clang ) : 13.0.0 [ mark verified]
61+ - [ GCC] ( /implementation.md#gcc ) : 10.1.0 [ mark verified]
62+ - [ ICC] ( /implementation.md#icc ) : ?
63+ - [ Visual C++] ( /implementation.md#visual_cpp ) : 2019 Update 10 [ mark verified]
Original file line number Diff line number Diff line change 1+ # コンストラクタ
2+ * ranges[ meta header]
3+ * std::ranges[ meta namespace]
4+ * join_view[ meta class]
5+ * function[ meta id-type]
6+ * cpp20[ meta cpp]
7+
8+ ``` cpp
9+ join_view ()
10+ requires default_initializable<V> = default; // (1) C++20
11+
12+ constexpr explicit join_view (V base); // (2) C++20
13+ ```
14+
15+ ## 概要
16+
17+ [`join_view`](../join_view.md)オブジェクトを構築する。
18+
19+ - (1) : デフォルト構築
20+ - (2) : 元となるviewを指定して構築
21+
22+ ## 効果
23+
24+ - (1) : `base_`をデフォルト構築する
25+ - (2) : `base_`を`std::move(base)`で初期化する
26+
27+ ## 例
28+ ```cpp example
29+ #include <iostream>
30+ #include <ranges>
31+ #include <vector>
32+ #include <string>
33+
34+ int main() {
35+ std::vector<std::string> words = {"hello", "world", "join"};
36+
37+ std::ranges::join_view view{words};
38+ for (char c : view) {
39+ std::cout << c;
40+ }
41+ std::cout << std::endl;
42+ }
43+ ```
44+ * join_view[ color ff0000]
45+
46+ ### 出力
47+ ```
48+ helloworldjoin
49+ ```
50+
51+ ## バージョン
52+ ### 言語
53+ - C++20
54+
55+ ### 処理系
56+ - [ Clang] ( /implementation.md#clang ) : 13.0.0 [ mark verified]
57+ - [ GCC] ( /implementation.md#gcc ) : 10.1.0 [ mark verified]
58+ - [ ICC] ( /implementation.md#icc ) : ?
59+ - [ Visual C++] ( /implementation.md#visual_cpp ) : 2019 Update 10 [ mark verified]
Original file line number Diff line number Diff line change 1+ # 推論補助
2+ * ranges[ meta header]
3+ * std::ranges[ meta namespace]
4+ * function[ meta id-type]
5+ * cpp20[ meta cpp]
6+
7+ ``` cpp
8+ namespace std ::ranges {
9+ template<class R >
10+ join_view(R&&) -> join_view< views::all_t<R > >;
11+ }
12+ ```
13+
14+ ## 概要
15+
16+ [`join_view`](../join_view.md)クラステンプレートの型推論補助。
17+
18+ この推論補助によって、元のRangeが暗黙的に[all view](../all.md)でラップされる。
19+
20+ ## 例
21+ ```cpp example
22+ #include <ranges>
23+ #include <vector>
24+ #include <string>
25+ #include <concepts>
26+
27+ int main() {
28+ std::vector<std::string> words = {"hello", "world", "join"};
29+
30+ std::ranges::join_view r1{words};
31+ static_assert(std::same_as<
32+ decltype(r1),
33+ std::ranges::join_view<std::ranges::ref_view<std::vector<std::string>>>
34+ >);
35+
36+ std::ranges::join_view r2{std::vector<std::string>{"a", "b", "c"}};
37+ static_assert(std::same_as<
38+ decltype(r2),
39+ std::ranges::join_view<std::ranges::owning_view<std::vector<std::string>>>
40+ >);
41+ }
42+ ```
43+
44+ ### 出力
45+ ```
46+ ```
47+
48+ ## バージョン
49+ ### 言語
50+ - C++20
51+
52+ ### 処理系
53+ - [ Clang] ( /implementation.md#clang ) : 13.0.0 [ mark verified]
54+ - [ GCC] ( /implementation.md#gcc ) : 10.1.0 [ mark verified]
55+ - [ ICC] ( /implementation.md#icc ) : ?
56+ - [ Visual C++] ( /implementation.md#visual_cpp ) : 2019 Update 10 [ mark verified]
You can’t perform that action at this time.
0 commit comments