Skip to content

Commit d9e860a

Browse files
committed
ref_view : メンバ関数を追加 #713
1 parent 773e04a commit d9e860a

10 files changed

Lines changed: 481 additions & 12 deletions

File tree

GLOBAL_QUALIFY_LIST.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@
7878
* <concepts>[link /reference/concepts.md]
7979
* common_reference_with[link /reference/concepts/common_reference_with.md]
8080
* common_with[link /reference/concepts/common_with.md]
81+
* convertible_to[link /reference/concepts/convertible_to.md]
8182
* copy_constructible[link /reference/concepts/copy_constructible.md]
8283
* default_initializable[link /reference/concepts/default_initializable.md]
8384
* equality_comparable[link /reference/concepts/equality_comparable.md]

reference/ranges/ref_view.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@ Rangeへの参照として振る舞う[`view`](view.md)。このクラスのオ
2929
3030
## メンバ関数
3131
32-
| 名前 | 説明 | 対応バージョン |
33-
|--------------------------------------------------|-----------------------------------|----------------|
34-
| [`(constructor)`](ref_view/op_constructor.md.nolink) | コンストラクタ | C++20 |
35-
| [`base`](ref_view/base.md.nolink) | `R`の参照を取得する | C++20 |
36-
| [`begin`](ref_view/begin.md.nolink) | 先頭を指すイテレータを取得する | C++20 |
37-
| [`end`](ref_view/end.md.nolink) | 番兵を取得する | C++20 |
38-
| [`empty`](ref_view/empty.md.nolink) | Rangeが空かどうかを判定する | C++20 |
39-
| [`size`](ref_view/size.md.nolink) | 要素数を取得する | C++20 |
40-
| [`data`](ref_view/data.md.nolink) | Rangeの先頭へのポインタを取得する | C++20 |
32+
| 名前 | 説明 | 対応バージョン |
33+
|------------------------------------------------|-----------------------------------|----------------|
34+
| [`(constructor)`](ref_view/op_constructor.md) | コンストラクタ | C++20 |
35+
| [`base`](ref_view/base.md) | 元となるRangeへの参照を取得する | C++20 |
36+
| [`begin`](ref_view/begin.md) | 先頭を指すイテレータを取得する | C++20 |
37+
| [`end`](ref_view/end.md) | 番兵を取得する | C++20 |
38+
| [`empty`](ref_view/empty.md) | Rangeが空かどうかを判定する | C++20 |
39+
| [`size`](ref_view/size.md) | 要素数を取得する | C++20 |
40+
| [`data`](ref_view/data.md) | Rangeの先頭へのポインタを取得する | C++20 |
4141
4242
`r`を参照先のRangeとする。`empty`、`size`、`data`は、それぞれ[`ranges::empty`](empty.md)`(r)`、[`ranges::size`](size.md)`(r)`、[`ranges::data`](data.md)`(r)`が有効な式であるときに定義される。
4343
@@ -49,14 +49,14 @@ Rangeへの参照として振る舞う[`view`](view.md)。このクラスのオ
4949
| [`front`](view_interface/front.md) | 先頭要素への参照を取得する | C++20 |
5050
| [`back`](view_interface/back.md) | 末尾要素への参照を取得する | C++20 |
5151
| [`operator[]`](view_interface/op_at.md) | 要素へアクセスする | C++20 |
52-
| [`cbegin`](view_interface/cbegin.md) | 定数イテレータを取得する | C++23 |
53-
| [`cend`](view_interface/cend.md) | 定数イテレータ(番兵)を取得する | C++23 |
52+
| [`cbegin`](view_interface/cbegin.md) | 定数イテレータを取得する | C++23 |
53+
| [`cend`](view_interface/cend.md) | 定数イテレータ(番兵)を取得する | C++23 |
5454
5555
## 推論補助
5656
5757
| 名前 | 説明 | 対応バージョン |
5858
|-------------------------------------------------------|------------------------------|----------------|
59-
| [`(deduction_guide)`](ref_view/op_deduction_guide.md.nolink) | クラステンプレートの推論補助 | C++20 |
59+
| [`(deduction_guide)`](ref_view/op_deduction_guide.md) | クラステンプレートの推論補助 | C++20 |
6060
6161
## 例
6262
```cpp example

reference/ranges/ref_view/base.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# base
2+
* ranges[meta header]
3+
* std::ranges[meta namespace]
4+
* ref_view[meta class]
5+
* function[meta id-type]
6+
* cpp20[meta cpp]
7+
8+
```cpp
9+
constexpr R& base() const; // (1) C++20
10+
```
11+
12+
## 概要
13+
元となるRangeへの参照を取得する。
14+
15+
16+
## 戻り値
17+
18+
メンバ変数`r_`として保持しているRangeへのポインタがあるとして、以下を返す:
19+
20+
```cpp
21+
return *r_;
22+
```
23+
24+
25+
##
26+
```cpp
27+
#include <cassert>
28+
#include <vector>
29+
#include <ranges>
30+
31+
int main() {
32+
std::vector<int> v = {1, 2, 3};
33+
auto r = std::ranges::ref_view(v);
34+
auto& base = r.base();
35+
36+
assert(&base == &v);
37+
}
38+
```
39+
* base()[color ff0000]
40+
41+
### 出力
42+
```
43+
```
44+
45+
46+
## バージョン
47+
### 言語
48+
- C++20
49+
50+
### 処理系
51+
- [Clang](/implementation.md#clang): 13.0.0 [mark verified]
52+
- [GCC](/implementation.md#gcc): 10.1.0 [mark verified]
53+
- [ICC](/implementation.md#icc): ?
54+
- [Visual C++](/implementation.md#visual_cpp): 2019 Update 10 [mark verified]

reference/ranges/ref_view/begin.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# begin
2+
* ranges[meta header]
3+
* std::ranges[meta namespace]
4+
* ref_view[meta class]
5+
* function[meta id-type]
6+
* cpp20[meta cpp]
7+
8+
```cpp
9+
constexpr iterator_t<R> begin() const; // (1) C++20
10+
```
11+
12+
## 概要
13+
`view`の先頭要素を指すイテレータを取得する。
14+
15+
## 戻り値
16+
メンバ変数`r_`として保持しているRangeへのポインタがあるとして、以下を返す:
17+
18+
```cpp
19+
return ranges::begin(*r_);
20+
```
21+
* ranges::begin[link /reference/ranges/begin.md]
22+
23+
24+
##
25+
```cpp example
26+
#include <iostream>
27+
#include <vector>
28+
#include <ranges>
29+
30+
int main() {
31+
std::vector<int> v = {1, 2, 3};
32+
auto r = std::ranges::ref_view(v);
33+
auto it = r.begin();
34+
auto end = r.end();
35+
36+
while (it != end) {
37+
std::cout << *it << ' ';
38+
++it;
39+
}
40+
```
41+
* begin[color ff0000]
42+
* end()[link end.md]
43+
44+
### 出力
45+
```
46+
1 2 3
47+
```
48+
49+
## バージョン
50+
### 言語
51+
- C++20
52+
53+
### 処理系
54+
- [Clang](/implementation.md#clang): 13.0.0 [mark verified]
55+
- [GCC](/implementation.md#gcc): 10.1.0 [mark verified]
56+
- [ICC](/implementation.md#icc): ?
57+
- [Visual C++](/implementation.md#visual_cpp): 2019 Update 10 [mark verified]

reference/ranges/ref_view/data.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# data
2+
* ranges[meta header]
3+
* std::ranges[meta namespace]
4+
* ref_view[meta class]
5+
* function[meta id-type]
6+
* cpp20[meta cpp]
7+
8+
```cpp
9+
constexpr auto data() const
10+
requires contiguous_range<R>; // (1) C++20
11+
```
12+
13+
## 概要
14+
Rangeの先頭へのポインタを取得する。
15+
16+
17+
## テンプレートパラメータ制約
18+
-`R`[`contiguous_range`](/reference/ranges/contiguous_range.md)であること。
19+
20+
21+
## 戻り値
22+
23+
メンバ変数`r_`として保持しているRangeへのポインタがあるとして、以下を返す:
24+
25+
```cpp
26+
return ranges::data(*r_);
27+
```
28+
* ranges::data[link /reference/ranges/data.md]
29+
30+
31+
##
32+
```cpp
33+
#include <cassert>
34+
#include <vector>
35+
#include <ranges>
36+
37+
int main() {
38+
std::vector<int> v = {1, 2, 3};
39+
auto r = std::ranges::ref_view(v);
40+
41+
int* p = r.data();
42+
assert(p == v.data());
43+
}
44+
```
45+
* r.data[color ff0000]
46+
* v.data()[link /reference/vector/vector/data.md]
47+
48+
### 出力
49+
```
50+
```
51+
52+
53+
## バージョン
54+
### 言語
55+
- C++20
56+
57+
### 処理系
58+
- [Clang](/implementation.md#clang): 13.0.0 [mark verified]
59+
- [GCC](/implementation.md#gcc): 10.1.0 [mark verified]
60+
- [ICC](/implementation.md#icc): ?
61+
- [Visual C++](/implementation.md#visual_cpp): 2019 Update 10 [mark verified]

reference/ranges/ref_view/empty.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# empty
2+
* ranges[meta header]
3+
* std::ranges[meta namespace]
4+
* ref_view[meta class]
5+
* function[meta id-type]
6+
* cpp20[meta cpp]
7+
8+
```cpp
9+
constexpr bool empty() const
10+
requires requires { ranges::empty(*r_); }; // (1) C++20
11+
```
12+
* ranges::empty[link /reference/ranges/empty.md]
13+
14+
## 概要
15+
Rangeが空かどうかを判定する。
16+
17+
18+
## テンプレートパラメータ制約
19+
- [`ranges::empty`](/reference/ranges/empty.md)`(*r_)`が有効な式であること
20+
21+
22+
## 戻り値
23+
24+
メンバ変数`r_`として保持しているRangeへのポインタがあるとして、以下を返す:
25+
26+
```cpp
27+
return ranges::empty(*r_);
28+
```
29+
* ranges::empty[link /reference/ranges/empty.md]
30+
31+
32+
##
33+
```cpp
34+
#include <iostream>
35+
#include <vector>
36+
#include <ranges>
37+
38+
int main() {
39+
std::vector<int> v = {1, 2, 3};
40+
auto r = std::ranges::ref_view(v);
41+
std::cout << r.empty() << std::endl;
42+
}
43+
```
44+
* empty[color ff0000]
45+
46+
### 出力
47+
```
48+
0
49+
```
50+
51+
52+
## バージョン
53+
### 言語
54+
- C++20
55+
56+
### 処理系
57+
- [Clang](/implementation.md#clang): 13.0.0 [mark verified]
58+
- [GCC](/implementation.md#gcc): 10.1.0 [mark verified]
59+
- [ICC](/implementation.md#icc): ?
60+
- [Visual C++](/implementation.md#visual_cpp): 2019 Update 10 [mark verified]

reference/ranges/ref_view/end.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# end
2+
* ranges[meta header]
3+
* std::ranges[meta namespace]
4+
* ref_view[meta class]
5+
* function[meta id-type]
6+
* cpp20[meta cpp]
7+
8+
```cpp
9+
constexpr sentinel_t<R> end() const; // (1) C++20
10+
```
11+
12+
## 概要
13+
14+
番兵を取得する。
15+
16+
17+
## 戻り値
18+
メンバ変数`r_`として保持しているRangeへのポインタがあるとして、以下を返す:
19+
20+
```cpp
21+
ranges::end(*r_);
22+
```
23+
* ranges::end[link /reference/ranges/end.md]
24+
25+
26+
27+
## 例
28+
```cpp example
29+
#include <iostream>
30+
#include <vector>
31+
#include <ranges>
32+
33+
int main() {
34+
std::vector<int> v = {1, 2, 3};
35+
auto r = std::ranges::ref_view(v);
36+
auto it = r.begin();
37+
auto end = r.end();
38+
39+
while (it != end) {
40+
std::cout << *it << ' ';
41+
++it;
42+
}
43+
```
44+
* end[color ff0000]
45+
* begin()[link begin.md]
46+
47+
### 出力
48+
```
49+
1 2 3
50+
```
51+
52+
## バージョン
53+
### 言語
54+
- C++20
55+
56+
### 処理系
57+
- [Clang](/implementation.md#clang): 13.0.0 [mark verified]
58+
- [GCC](/implementation.md#gcc): 10.1.0 [mark verified]
59+
- [ICC](/implementation.md#icc): ?
60+
- [Visual C++](/implementation.md#visual_cpp): 2019 Update 10 [mark verified]

0 commit comments

Comments
 (0)