Skip to content

Commit b15f55f

Browse files
committed
execution: 微調整 (#1384)
1 parent 4a750d8 commit b15f55f

File tree

7 files changed

+83
-6
lines changed

7 files changed

+83
-6
lines changed

reference/execution/execution/on.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,26 @@ transform_sender(
127127
* set_value_t[link set_value.md]
128128
* get_env[link get_env.md]
129129
* query-with-default[link query-with-default.md]
130-
* write-env[link write-env.md.nolink]
130+
* write-env[link write-env.md]
131131
* SCHED-ENV[link SCHED-ENV.md.nolink]
132+
* std::move[link /reference/utility/move.md]
133+
134+
説明専用のクラス`not-a-scheduler`を未規定な空のクラス型、`not-a-sender`を下記の通り定義する。
135+
136+
```cpp
137+
struct not-a-sender {
138+
using sender_concept = sender_t;
139+
140+
auto get_completion_signatures(auto&&) const {
141+
return see below;
142+
}
143+
};
144+
```
145+
* sender_t[link sender.md]
146+
* see below[italic]
147+
148+
メンバ関数`get_completion_signatures`[`completion_signatures`](completion_signatures.md)クラステンプレートの特殊化とは異なる型のオブジェクトを返す。
149+
処理系(標準ライブラリ実装者)は、この型を用いてユーザにエラー理由を通知することが推奨される。
132150

133151

134152
## カスタマイゼーションポイント

reference/execution/execution/product-type.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ struct product-type { // exposition only
2424
* see below[italic]
2525
2626
## 概要
27-
`product-type`は、実行制御ライブラリの仕様定義で用いられる説明専用のクラステンプレートである
27+
`product-type`は、Senderアルゴリズム動作仕様定義で用いられる説明専用のクラステンプレートである
2828
2929
`product-type`型の式は[構造化束縛](/lang/cpp17/structured_bindings.md)における初期化子として利用できる。
3030

reference/execution/execution/query-with-default.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ constexpr decltype(auto) query-with-default(
1212
* see below[italic]
1313
1414
## 概要
15-
`query-with-default`は、実行制御ライブラリの仕様定義で用いられる説明専用の関数テンプレートである
15+
`query-with-default`は、Senderアルゴリズム動作仕様定義で用いられる説明専用の関数テンプレートである
1616
1717
説明用の式`e`を、適格であるならば`Tag()(env)`とする。そうでなければ、`static_cast<Default>(`[`std::forward`](/reference/utility/forward.md)`<Default>(value))`とする。
1818

reference/execution/execution/with-await-transform.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ namespace std::execution {
2323
decltype(auto) await_transform(T&& value)
2424
noexcept(noexcept(std::forward<T>(value).as_awaitable(declval<Derived&>())))
2525
{
26-
return std::forward<T>(value).as_awaitable(static_cast<Derived&>(*this));
26+
return std::forward<T>(value).as_awaitable(static_cast<Derived&>(*this));
2727
}
2828
};
2929
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# write-env
2+
* execution[meta header]
3+
* function template[meta id-type]
4+
* std::execution[meta namespace]
5+
* cpp26[meta cpp]
6+
7+
```cpp
8+
template<sender Sndr, queryable Env>
9+
constexpr auto write-env(Sndr&& sndr, Env&& env); // exposition only
10+
```
11+
12+
## 概要
13+
`write-env`は、Senderアルゴリズム動作仕様定義で用いられる説明専用のSenderアダプタである。
14+
15+
[クエリ可能オブジェクト](../queryable.md)`env`と接続先[Receiver](receiver.md)の環境を合成した、新たなクエリ可能オブジェクトに関連付けれられたSenderを生成する。
16+
17+
18+
## 戻り値
19+
説明専用の`write-env-t`を空のクラスとしたとき、下記を返す。
20+
21+
```cpp
22+
make-sender(write-env-t(), std::forward<Env>(env), std::forward<Sndr>(sndr))
23+
```
24+
* make-sender[link make-sender.md]
25+
26+
27+
### Senderアルゴリズムタグ
28+
Senderアルゴリズム動作説明用のクラステンプレート[`impls-for`](impls-for.md)に対して、下記の特殊化が定義される。
29+
30+
```cpp
31+
template<>
32+
struct impls-for<write-env-t> : default-impls {
33+
static constexpr auto get-env =
34+
[](auto, const auto& state, const auto& rcvr) noexcept {
35+
return see below;
36+
};
37+
};
38+
```
39+
* impls-for[link impls-for.md]
40+
* default-impls[link impls-for.md]
41+
* see below[italic]
42+
43+
`impls-for<write-env-t>​::​get-env`メンバの呼び出しは下記を満たすオブジェクト`e`を返す。
44+
45+
- 型`decltype(e)`が[`queryable`](../queryable.md)のモデルであり、かつ
46+
- 与えられた[クエリオブジェクト](../queryable.md)`q`に対して、式`e.query(q)`は式`state.query(q)`が有効ならばその式と等価。そうでなければ、式`e.query(q)`は[`get_env`](get_env.md)`(rcvr).query(q)`と等価。
47+
48+
49+
## バージョン
50+
### 言語
51+
- C++26
52+
53+
54+
## 関連項目
55+
- [`execution::on`](on.md)
56+
57+
58+
## 参照
59+
- [P2300R10 `std::execution`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html)

reference/execution/this_thread/sync-wait-env.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ namespace std::this_thread {
2525
* get_scheduler()[link ../execution/run_loop/get_scheduler.md]
2626
2727
## 概要
28-
`sync-wait-env`は、実行制御ライブラリの仕様定義で用いられる説明専用のクラステンプレートである
28+
`sync-wait-env`は、Senderアルゴリズム動作仕様定義で用いられる説明専用のクラステンプレートである
2929
3030
Senderコンシューマ[`sync_wait`](sync_wait.md)、[`sync_wait_with_variant`](sync_wait_with_variant.md)動作において[Receiver](../execution/receiver.md)の[環境](../queryable.md)として利用される。
3131

reference/execution/this_thread/sync-wait-receiver.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ namespace std::this_thread {
3737
* sync-wait-result-type[link sync_wait.md]
3838
3939
## 概要
40-
`sync-wait-receiver`および`sync-wait-state`は、実行制御ライブラリの仕様定義で用いられる説明専用のクラステンプレートである
40+
`sync-wait-receiver`および`sync-wait-state`は、Senderアルゴリズム動作仕様定義で用いられる説明専用のクラステンプレートである
4141
4242
Senderコンシューマ[`sync_wait`](sync_wait.md)動作において[Sender](../execution/sender.md)と[接続(connect)](../execution/connect.md)する[Receiver](../execution/receiver.md)、同Receiverの内部状態として利用される。
4343

0 commit comments

Comments
 (0)