Skip to content

Commit 2121599

Browse files
committed
execution: C++26 P3557R3対応(cont.)
- 非依存Senderの定義説明 - 仕様記述誤り修正 - 内部リンク付与
1 parent 157a932 commit 2121599

14 files changed

+38
-23
lines changed

reference/execution/execution.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ Senderコンシューマは名前空間 `std::this_thread` で定義される。
141141
| 名前 | 説明 | 対応バージョン |
142142
|------|------|----------------|
143143
| [`execution::completion_signatures`](execution/completion_signatures.md) | 完了シグネチャ集合を表現する型 (class template) | C++26 |
144-
| [`execution::dependent_sender_error`](execution/dependent_sender_error.md) | 依存Sender例外(class) | C++26 |
144+
| [`execution::dependent_sender_error`](execution/dependent_sender_error.md) | 依存Senderを表す例外クラス(class) | C++26 |
145145
| [`execution::get_completion_signatures`](execution/get_completion_signatures.md) | Senderの完了シグネチャ集合を取得 (function template) | C++26 |
146146
| [`execution::completion_signatures_of_t`](execution/completion_signatures_of_t.md) | Senderの完了シグネチャ集合を取得 (alias template) | C++26 |
147147
| [`execution::run_loop`](execution/run_loop.md) | 単一スレッド上でのループ実行 (class) | C++26 |

reference/execution/execution/basic-sender.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ using indices-for = remove_reference_t<Sndr>::indices-for; // exposition only
9797

9898
## 関連項目
9999
- [`make-sender`](make-sender.md)
100+
- [`impls-for`](impls-for.md)
100101
- [`basic-operation`](basic-operation.md)
101102
- [`execution::sender`](sender.md)
102103

reference/execution/execution/completion_signatures.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ int main()
9090

9191

9292
## 関連項目
93-
- [`execution::receiver`](receiver.md)
93+
- [`execution::get_completion_signatures`](get_completion_signatures.md)
9494
- [`execution::set_value_t`](set_value.md)
9595
- [`execution::set_error_t`](set_error.md)
9696
- [`execution::set_stopped_t`](set_stopped.md)

reference/execution/execution/data-type.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ namespace std::execution {
2323
## 関連項目
2424
- [`execution::read_env`](read_env.md)
2525
- [`execution::schedule_from`](schedule_from.md)
26+
- [`execution::then`](then.md)
27+
- [`execution::let_value`](let_value.md)
28+
- [`execution::bulk`](bulk.md)
2629
- [`write-env`](write-env.md)
2730
2831

reference/execution/execution/decay-copyable-result-datums.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ constexpr void decay-copyable-result-datums(auto cs) {
1313
}
1414
```
1515
* for-each[link completion_signatures.md]
16+
* is_constructible_v[link /reference/type_traits/is_constructible.md]
1617

1718
## 概要
1819
`decay-copyable-result-datums`は、Senderアルゴリズム動作仕様定義で用いられる説明専用の関数テンプレートである。
@@ -33,6 +34,8 @@ constexpr void decay-copyable-result-datums(auto cs) {
3334

3435
## 関連項目
3536
- [`execution::schedule_from`](schedule_from.md)
37+
- [`execution::when_all`](when_all.md)
38+
- [`execution::into_variant`](into_variant.md)
3639

3740

3841
## 参照

reference/execution/execution/dependent_sender.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace std::execution {
1515
* bool_constant[link /reference/type_traits/bool_constant.md]
1616
1717
## 概要
18-
`dependent_sender`は、[Sender型](sender.md)`Sndr`が依存Senderであることを表すコンセプトである
18+
`dependent_sender`は、[Sender型](sender.md)`Sndr`が[非依存Sender](get_completion_signatures.md)か否かを判定するコンセプトである
1919
2020
説明用の変数テンプレート`is-dependent-sender-helper`を下記の通り定義する。
2121

reference/execution/execution/dependent_sender_error.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace std::execution {
1212
* exception[link /reference/exception/exception.md]
1313
1414
## 概要
15-
`dependent_sender_error`は、[依存Sender](dependent_sender.md)に対する[完了シグネチャ集合取得](get_completion_signatures.md)時に送出される例外クラスである
15+
`dependent_sender_error`は、[依存Sender](dependent_sender.md)に対して[環境](../queryable.md)を指定せずに[完了シグネチャ集合取得](get_completion_signatures.md)を行った際に送出される例外クラスである
1616
1717
1818
## バージョン
@@ -30,5 +30,6 @@ namespace std::execution {
3030
- [`execution::dependent_sender`](dependent_sender.md)
3131
- [`execution::get_completion_signatures`](get_completion_signatures.md)
3232
33+
3334
## 参照
3435
- [P3557R3 High-Quality Sender Diagnostics with Constexpr Exceptions](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3557r3.html)

reference/execution/execution/get_completion_signatures.md

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,17 @@ namespace std::execution {
1515
## 概要
1616
`get_completion_signatures`は、[Sender](sender.md)の[完了シグネチャ集合](completion_signatures.md)を取得する関数テンプレートである。
1717
18+
### 非依存Sender
19+
[環境](../queryable.md)に依存することなく完了シグネチャ集合が決定するSenderは、非依存Sender(non-dependent sender)と呼ばれる。
20+
21+
型`Sndr`に対して[`sender`](sender.md)`<Sndr> == true`かつ[`dependent_sender`](dependent_sender.md)`<Sndr> == false`の場合、`Sndr`は非依存Senderである。
22+
23+
24+
## テンプレートパラメータ制約
25+
`sizeof...(Env) <= 1`
26+
27+
28+
## 効果
1829
説明用の式`except`を、[`move_constructible`](/reference/concepts/move_constructible.md)`<Except> &&` [`derived_from`](/reference/concepts/derived_from.md)`<Except,` [`exception`](/reference/exception/exception.md)`>`が`true`となる未規定なクラス`Except`の右辺値とする。`e`がコア定数式かつその型が[`valid-completion-signatures`](completion_signatures.md)を満たすならば、式`CHECKED-COMPLSIGS(e)`を`e`とする。そうでなければ下記の式となる。
1930
2031
```cpp
@@ -35,12 +46,6 @@ transform_sender(
3546
* transform_sender[link transform_sender.md]
3647
* get-domain-late[link get-domain-late.md]
3748
38-
39-
## テンプレートパラメータ制約
40-
`sizeof...(Env) <= 1`
41-
42-
43-
## 効果
4449
下記の通り定義される式`e`を用いて、`return e;`と等価。
4550
4651
- 式`get-complsigs<NewSndr, Env...>()`が適格であるならば、`CHECKED-COMPLSIGS(get-complsigs<NewSndr, Env...>())`
@@ -92,7 +97,7 @@ int main()
9297
ex::sender auto sndr = ex::just(42);
9398

9499
// 値完了シグネチャ set_value_t(int)
95-
auto sigs = ex::get_completion_signatures(sndr);
100+
auto sigs = ex::get_completion_signatures<decltype(sndr)>();
96101
static_assert(std::same_as<decltype(sigs),
97102
ex::completion_signatures<ex::set_value_t(int)>>);
98103
}

reference/execution/execution/let_value.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,12 +147,12 @@ cs.for-each(overload-set(fn, [](auto){}));
147147
* set-cpo[italic]
148148

149149
`unspecified-exception`[`exception`](/reference/exception/exception.md)から派生した型となる。
150-
変数`is-valid-let-sender`は下記を全て満たす時に限って`true`となる。
150+
説明用の変数`is-valid-let-sender`は下記を全て満たす時に限って`true`となる。
151151

152152
- `(`[`constructible_from`](/reference/concepts/constructible_from.md)`<decay_t<Ts>, Ts> &&...)`
153-
- `invocable<LetFn, decay_t<Ts>&...>`
154-
- [`sender`](sender.md)`<invoke_result_t<LetFn, decay_t<Ts>&...>>`
155-
- パック`env-t``decltype(let-cpo.transform_env(declval<Sndr>(), declval<Env>()))`としたとき、`sizeof...(Env) == 0 ||` [`sender_in`](sender_in.md)`<invoke_result_t<LetFn, decay_t<Ts>&...>, env-t...>`
153+
- [`invocable`](/reference/concepts/invocable.md)`<LetFn, decay_t<Ts>&...>`
154+
- [`sender`](sender.md)`<`[`invoke_result_t`](/reference/type_traits/invoke_result.md)`<LetFn, decay_t<Ts>&...>>`
155+
- パック`env-t``decltype(let-cpo.transform_env(declval<Sndr>(), declval<Env>()))`としたとき、`sizeof...(Env) == 0 ||` [`sender_in`](sender_in.md)`<`[`invoke_result_t`](/reference/type_traits/invoke_result.md)`<LetFn, decay_t<Ts>&...>, env-t...>`
156156

157157
説明用の式`sndr``env`に対して、型`Sndr``decltype((sndr))`とする。[`sender-for`](sender-for.md)`<Sndr,` [`decayed-typeof`](/reference/functional/decayed-typeof.md)`<let-cpo>> == false`のとき、式`let-cpo.transform_env(sndr, env)`は不適格となる。
158158

reference/execution/execution/run_loop/get_scheduler.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ int main()
3434
ex::sender auto sndr = ex::schedule(sch);
3535

3636
// スケジュールSenderの完了シグネチャ集合を確認
37-
auto sigs = ex::get_completion_signatures(sndr);
38-
static_assert(std::same_as<decltype(sigs),
37+
using Sigs = ex::completion_signatures_of_t<decltype(sndr)>;
38+
static_assert(std::same_as<Sigs,
3939
ex::completion_signatures<ex::set_value_t(),
4040
ex::set_error_t(std::exception_ptr),
4141
ex::set_stopped_t()>>);
@@ -50,7 +50,7 @@ int main()
5050
* ex::scheduler[link ../scheduler.md]
5151
* ex::sender[link ../sender.md]
5252
* ex::schedule[link ../schedule.md]
53-
* ex::get_completion_signatures[link ../get_completion_signatures.md]
53+
* ex::completion_signatures_of_t[link ../completion_signatures_of_t.md]
5454
* ex::completion_signatures[link ../completion_signatures.md]
5555
* ex::set_value_t[link ../set_value.md]
5656
* ex::set_error_t[link ../set_error.md]

0 commit comments

Comments
 (0)