Skip to content

Commit c1091ca

Browse files
committed
execution: get-completion-domain (#1384)
1 parent 7a7c220 commit c1091ca

File tree

2 files changed

+51
-1
lines changed

2 files changed

+51
-1
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# completion-domain
2+
* execution[meta header]
3+
* function template[meta id-type]
4+
* std::execution[meta namespace]
5+
* cpp26[meta cpp]
6+
7+
```cpp
8+
template<class Default = default_domain, class Sndr>
9+
constexpr auto completion-domain(const Sndr& sndr) noexcept;
10+
```
11+
* default_domain[link default_domain.md]
12+
13+
## 概要
14+
[Sender型](sender.md)`sndr`の[完了Scheduler](get_completion_scheduler.md)から[実行ドメイン](default_domain.md)を取得する説明専用の関数テンプレート。
15+
16+
17+
## 効果
18+
説明用の型`COMPL-DOMAIN(T)`を式[`get_domain`](get_domain.md)`(`[`get_completion_scheduler`](get_completion_scheduler.md)`<T>(`[`get_env`](get_env.md)`(sndr)))`の型とする。
19+
20+
- 型`COMPL-DOMAIN(`[`set_value_t`](set_value.md)`)`、`COMPL-DOMAIN(`[`set_error_t`](set_error.md)`)`、`COMPL-DOMAIN(`[`set_stopped_t`](set_stopped.md)`)`の全てが不適格の場合、`completion-domain<Default>`は`Default`型のデフォルト構築されたprvalueとなる。
21+
- そうではなく、上記のうち不適格となる型を除いた型が[共通型](/reference/type_traits/common_type.md)を共有するならば、`completion-domain<Default>`はその共有型のデフォルト構築されたprvalueとなる。
22+
- そうでなければ、`completion-domain<Default>`は不適格となる。
23+
24+
25+
## 例外
26+
投げない
27+
28+
29+
## バージョン
30+
### 言語
31+
- C++26
32+
33+
34+
## 関連項目
35+
- [`get-domain-early`](get-domain-early.md.nolink)
36+
- [`get-domain-late`](get-domain-late.md)
37+
38+
39+
## 参照
40+
- [P2999R3 Sender Algorithm Customization](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2999r3.html)
41+
- [P2300R10 `std::execution`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html)

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,15 @@ constexpr auto get-domain-late(const Sndr& sndr, const Env& env) noexcept;
1212
## 概要
1313
[Sender](sender.md)と[Receiver](receiver.md)間[接続(connect)](connect.md)時のカスタマイゼーションポイントとして、[実行ドメイン](default_domain.md)を取得する説明専用の関数テンプレート。
1414
15+
下記の優先順で実行ドメインを検索し、最初に妥当となる型を採用する。
16+
(Senderアルゴリズム[`continue_on`](continue_on.md.nolink)のみ引数に指定した[Scheduler](scheduler.md)から取得。)
17+
18+
- Senderの[属性](../queryable.md)
19+
- Senderの[完了Scheduler](get_completion_scheduler.md)
20+
- Receiverの[環境](../queryable.md)
21+
- Receiver環境の[Scheduler](scheduler.md)
22+
- [`default_domain`](default_domain.md)
23+
1524
1625
## 効果
1726
説明用の型`Domain`を下記の通り定義したとき、`return Doamin();`と等価。
@@ -30,7 +39,7 @@ constexpr auto get-domain-late(const Sndr& sndr, const Env& env) noexcept;
3039
3140
- それ以外のとき、下記リストのうち最初に妥当となる式の型、かつ`void`ではない型とする。
3241
- [`get_domain`](get_domain.md)`(`[`get_env`](get_env.md)`(sndr))`
33-
- [`completion-domain`](completion-domain.md.nolink)`<void>(sndr)`
42+
- [`completion-domain<void>`](completion-domain.md)`(sndr)`
3443
- [`get_domain`](get_domain.md)`(env)`
3544
- [`get_domain`](get_domain.md)`(`[`get_scheduler`](get_scheduler.md)`(env))`
3645
- [`default_domain()`](default_domain.md)

0 commit comments

Comments
 (0)