Skip to content

Commit ebdeeed

Browse files
committed
execution: get_domain,get_(delegation_)scheduler (#1384)
1 parent e57a099 commit ebdeeed

10 files changed

Lines changed: 172 additions & 15 deletions

File tree

reference/execution/execution.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ namespace std::execution {
3939
| [`get_allocator`](get_allocator.md) | アロケータ取得のクエリオブジェクト (customization point object) | C++26 |
4040
| [`get_stop_token`](get_stop_token.md) | 停止トークン取得のクエリオブジェクト (customization point object) | C++26 |
4141
| [`stop_token_of_t`](stop_token_of_t.md) | 指定型から停止トークン型を取得 (alias template) | C++26 |
42-
| [`execution::get_domain`](execution/get_domain.md.nolink) | 実行ドメイン取得のクエリオブジェクト (customization point object) | C++26 |
43-
| [`execution::get_scheduler`](execution/get_scheduler.md.nolink) | Scheduler取得のクエリオブジェクト (customization point object) | C++26 |
44-
| [`execution::get_delegation_scheduler`](execution/get_delegation_scheduler.md.nolink) | 委譲Scheduler取得のクエリオブジェクト (customization point object) | C++26 |
42+
| [`execution::get_domain`](execution/get_domain.md) | 実行ドメイン取得のクエリオブジェクト (customization point object) | C++26 |
43+
| [`execution::get_scheduler`](execution/get_scheduler.md) | Scheduler取得のクエリオブジェクト (customization point object) | C++26 |
44+
| [`execution::get_delegation_scheduler`](execution/get_delegation_scheduler.md) | 委任Scheduler取得のクエリオブジェクト (customization point object) | C++26 |
4545
| [`execution::forward_progress_guarantee`](execution/forward_progress_guarantee.md.nolink) | 前進保証 (enum) | C++26 |
4646
| [`execution::get_forward_progress_guarantee`](execution/get_forward_progress_guarantee.md.nolink) | 前進保証取得のクエリオブジェクト (customization point object) | C++26 |
4747
| [`execution::get_completion_scheduler`](execution/get_completion_scheduler.md) | 完了Scheduler取得のクエリオブジェクト (customization point object) | C++26 |

reference/execution/execution/connect.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace std::execution {
1414
## 概要
1515
`connect`は、[Sender](sender.md)と[Receiver](receiver.md)を接続した結果[Operation State](operation_state.md)を返すカスタマイゼーションポイントオブジェクトである。
1616
17-
カスタマイゼーションポイントオブジェクトの呼び出し式`connect(sndr, rcvr)`は、下記の動作となる。
17+
呼び出し式`connect(sndr, rcvr)`は、下記の動作となる。
1818
1919
- [`transform_sender`](transform_sender.md)により`sndr`から新しいSender`new_sndr`へ変換する。(多くのケースで無変換)
2020
- 呼び出し式が適格であるならば、`new_sndr.connect(rcvr)`を返す。

reference/execution/execution/get-domain-late.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ constexpr auto get-domain-late(const Sndr& sndr, const Env& env) noexcept;
2525
}();
2626
```
2727
* query-or-default[link query-or-default.md.nolink]
28-
* get_domain[link get_domain.md.nolink]
28+
* get_domain[link get_domain.md]
2929
* default_domain()[link default_domain.md]
3030
3131
- それ以外のとき、下記リストのうち最初に妥当となる式の型、かつ`void`ではない型とする。
32-
- [`get_domain`](get_domain.md.nolink)`(`[`get_env`](get_env.md)`(sndr))`
32+
- [`get_domain`](get_domain.md)`(`[`get_env`](get_env.md)`(sndr))`
3333
- [`completion-domain`](completion-domain.md.nolink)`<void>(sndr)`
34-
- `get_domain(env)`
35-
- `get_domain(`[`get_scheduler`](get_scheduler.md.nolink)`(env))`
34+
- [`get_domain`](get_domain.md)`(env)`
35+
- [`get_domain`](get_domain.md)`(`[`get_scheduler`](get_scheduler.md)`(env))`
3636
- [`default_domain()`](default_domain.md)
3737
3838
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# get_delegation_scheduler
2+
* execution[meta header]
3+
* cpo[meta id-type]
4+
* std::execution[meta namespace]
5+
* cpp26[meta cpp]
6+
7+
```cpp
8+
namespace std::execution {
9+
struct get_delegation_scheduler_t { unspecified };
10+
constexpr get_delegation_scheduler_t get_delegation_scheduler{};
11+
}
12+
```
13+
* unspecified[italic]
14+
15+
## 概要
16+
`get_delegation_scheduler`は、[クエリ可能オブジェクト](../queryable.md)から委任[Scheduler](scheduler.md)を取得する[クエリオブジェクト](../queryable.md)である。
17+
18+
コア定数式[`forwarding_query`](forwarding_query.md.nolink)`(get_delegation_scheduler)`は`true`値を返す。
19+
20+
21+
## 効果
22+
呼び出し式`get_delegation_scheduler(env)`は下記と等価であり、適格であれば[`scheduler`](scheduler.md)を満たす型の値となる。
23+
24+
- 引数`env`がconst修飾された`cenv`を用いて、式`cenv.query(get_delegation_scheduler)`
25+
26+
27+
## 例外
28+
投げない
29+
30+
31+
## カスタマイゼーションポイント
32+
const修飾[クエリ可能オブジェクト](../queryable.md)`cenv`に対して式`cenv.query(get_delegation_scheduler)`が呼び出される。
33+
このとき、`noexcept(cenv.query(get_delegation_scheduler)) == true`であること。
34+
35+
36+
## バージョン
37+
### 言語
38+
- C++26
39+
40+
### 処理系
41+
- [Clang](/implementation.md#clang): ??
42+
- [GCC](/implementation.md#gcc): ??
43+
- [ICC](/implementation.md#icc): ??
44+
- [Visual C++](/implementation.md#visual_cpp): ??
45+
46+
47+
## 関連項目
48+
- [`scheduler`](scheduler.md)
49+
50+
51+
## 参照
52+
- [P2300R10 `std::execution`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html)
53+
- [NVIDIA/stdexec, Pull Request#354, with_delegee_scheduler](https://github.com/NVIDIA/stdexec/pull/354)
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# get_domain
2+
* execution[meta header]
3+
* cpo[meta id-type]
4+
* std::execution[meta namespace]
5+
* cpp26[meta cpp]
6+
7+
```cpp
8+
namespace std::execution {
9+
struct get_domain_t { unspecified };
10+
constexpr get_domain_t get_domain{};
11+
}
12+
```
13+
* unspecified[italic]
14+
15+
## 概要
16+
`get_domain`は、[クエリ可能オブジェクト](../queryable.md)から[実行ドメイン](default_domain.md)のタグ型を取得する[クエリオブジェクト](../queryable.md)である。
17+
18+
コア定数式[`forwarding_query`](forwarding_query.md.nolink)`(get_domain)`は`true`値を返す。
19+
20+
21+
## 効果
22+
呼び出し式`get_domain(env)`は下記と等価。
23+
24+
- 引数`env`がconst修飾された`cenv`を用いて、式`cenv.query(get_domain)`
25+
26+
27+
## 例外
28+
投げない
29+
30+
31+
## カスタマイゼーションポイント
32+
const修飾[クエリ可能オブジェクト](../queryable.md)`cenv`に対して式`cenv.query(get_domain)`が呼び出される。
33+
このとき、`noexcept(cenv.query(get_domain)) == true`であること。
34+
35+
36+
## バージョン
37+
### 言語
38+
- C++26
39+
40+
### 処理系
41+
- [Clang](/implementation.md#clang): ??
42+
- [GCC](/implementation.md#gcc): ??
43+
- [ICC](/implementation.md#icc): ??
44+
- [Visual C++](/implementation.md#visual_cpp): ??
45+
46+
47+
## 関連項目
48+
- [`default_domain`](default_domain.md)
49+
50+
51+
## 参照
52+
- [P2300R10 `std::execution`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html)

reference/execution/execution/get_env.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ namespace std::execution {
2020
2121
2222
## 効果
23-
`get_env(o)`は下記と等価であり、[`queryable`](../queryable.md)を満たす型の値となる。
23+
呼び出し式`get_env(o)`は下記と等価であり、[`queryable`](../queryable.md)を満たす型の値となる。
2424
2525
- 引数`o`がconst修飾された`co`を用いて、式`co.get_env()`が適格であればその値。
2626
- そうでなければ、空のクエリ可能オブジェクト[`env<>{}`](env.md)
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# get_scheduler
2+
* execution[meta header]
3+
* cpo[meta id-type]
4+
* std::execution[meta namespace]
5+
* cpp26[meta cpp]
6+
7+
```cpp
8+
namespace std::execution {
9+
struct get_scheduler { unspecified };
10+
constexpr get_scheduler_t get_scheduler{};
11+
}
12+
```
13+
* unspecified[italic]
14+
15+
## 概要
16+
`get_scheduler`は、[クエリ可能オブジェクト](../queryable.md)から[Scheduler](scheduler.md)を取得する[クエリオブジェクト](../queryable.md)である。
17+
18+
コア定数式[`forwarding_query`](forwarding_query.md.nolink)`(get_scheduler)`は`true`値を返す。
19+
20+
21+
## 効果
22+
呼び出し式`get_scheduler(env)`は下記と等価であり、適格であれば[`scheduler`](scheduler.md)を満たす型の値となる。
23+
24+
- 引数`env`がconst修飾された`cenv`を用いて、式`cenv.query(get_scheduler)`
25+
26+
27+
## 例外
28+
投げない
29+
30+
31+
## カスタマイゼーションポイント
32+
const修飾[クエリ可能オブジェクト](../queryable.md)`cenv`に対して式`cenv.query(get_scheduler)`が呼び出される。
33+
このとき、`noexcept(cenv.query(get_scheduler)) == true`であること。
34+
35+
36+
## バージョン
37+
### 言語
38+
- C++26
39+
40+
### 処理系
41+
- [Clang](/implementation.md#clang): ??
42+
- [GCC](/implementation.md#gcc): ??
43+
- [ICC](/implementation.md#icc): ??
44+
- [Visual C++](/implementation.md#visual_cpp): ??
45+
46+
47+
## 関連項目
48+
- [`scheduler`](scheduler.md)
49+
50+
51+
## 参照
52+
- [P2300R10 `std::execution`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html)

reference/execution/execution/scheduler.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ namespace std::execution {
7575

7676
あるScheduler`sch`に対して、式[`get_completion_scheduler`](get_completion_scheduler.md)`<`[`set_value_t`](set_value.md)`>(`[`get_env`](get_env.md)`(`[`schedule`](schedule.md)`(sch)))`が`sch`と等しいこと。
7777

78-
あるScheduler`sch`に対して式[`get_domain`](get_domain.md.nolink)`(sch)`が適格であるとき、式`get_domain(`[`get_env`](get_env.md)`(`[`schedule`](schedule.md)`(sch)))`も適格であり、かつ同じ型を持つ。
78+
あるScheduler`sch`に対して式[`get_domain`](get_domain.md)`(sch)`が適格であるとき、式[`get_domain`](get_domain.md)`(`[`get_env`](get_env.md)`(`[`schedule`](schedule.md)`(sch)))`も適格であり、かつ同じ型を持つ。
7979

8080
Scheduler型のデストラクタは、[`schedule`](schedule.md)が返すSenderオブジェクトに接続されたReceiverの完了を待機してブロックしてはならない。
8181

reference/execution/get_allocator.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ namespace std {
1919
2020
2121
## 効果
22-
`get_allocator(env)`は下記と等価であり、説明専用コンセプト`simple-allocator`を満たす型の値となる。
22+
呼び出し式`get_allocator(env)`は下記と等価であり、適格であれば説明専用コンセプト`simple-allocator`を満たす型の値となる。
2323
24-
- 引数`env`がconst修飾された`cenv`を用いて、式`cenv.query(get_allocator)`が適格であること。
24+
- 引数`env`がconst修飾された`cenv`を用いて、式`cenv.query(get_allocator)`
2525
2626
```cpp
2727
template<class Alloc>
@@ -40,7 +40,7 @@ concept simple-allocator =
4040

4141

4242
## カスタマイゼーションポイント
43-
const修飾[クエリ可能オブジェクト](queryable.md)`env`に対して式`env.query(get_allocator)`が呼び出される。
43+
const修飾[クエリ可能オブジェクト](queryable.md)`cenv`に対して式`cenv.query(get_allocator)`が呼び出される。
4444
このとき、`noexcept(cenv.query(get_allocator)) == true`であること。
4545

4646

reference/execution/get_stop_token.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ namespace std {
1919
2020
2121
## 効果
22-
`get_stop_token(env)`は下記と等価であり、[`stoppable_token`](/reference/stop_token/stoppable_token.md)を満たす型の値となる。
22+
呼び出し式`get_stop_token(env)`は下記と等価であり、[`stoppable_token`](/reference/stop_token/stoppable_token.md)を満たす型の値となる。
2323
2424
- 引数`env`がconst修飾された`cenv`を用いて、式`cenv.query(get_stop_token)`が適格であればその値。
2525
- そうでなければ、[`never_stop_token{}`](/reference/stop_token/never_stop_token.md)
@@ -30,7 +30,7 @@ namespace std {
3030
3131
3232
## カスタマイゼーションポイント
33-
const修飾[クエリ可能オブジェクト](queryable.md)`env`に対して式`env.query(get_stop_token)`が呼び出される。
33+
const修飾[クエリ可能オブジェクト](queryable.md)`cenv`に対して式`cenv.query(get_stop_token)`が呼び出される。
3434
このとき、`noexcept(cenv.query(get_stop_token)) == true`であること。
3535
3636

0 commit comments

Comments
 (0)