File tree Expand file tree Collapse file tree 7 files changed +83
-6
lines changed
Expand file tree Collapse file tree 7 files changed +83
-6
lines changed Original file line number Diff line number Diff 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## カスタマイゼーションポイント
Original file line number Diff line number Diff 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
Original file line number Diff line number Diff 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
Original file line number Diff line number Diff 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}
Original file line number Diff line number Diff line change 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)
Original file line number Diff line number Diff 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
3030Senderコンシューマ[`sync_wait`](sync_wait.md)、[`sync_wait_with_variant`](sync_wait_with_variant.md)動作において[Receiver](../execution/receiver.md)の[環境](../queryable.md)として利用される。
3131
Original file line number Diff line number Diff 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
4242Senderコンシューマ[`sync_wait`](sync_wait.md)動作において[Sender](../execution/sender.md)と[接続(connect)](../execution/connect.md)する[Receiver](../execution/receiver.md)、同Receiverの内部状態として利用される。
4343
You can’t perform that action at this time.
0 commit comments