|
1 | | -# write-env |
| 1 | +# write_env |
2 | 2 | * execution[meta header] |
3 | | -* function template[meta id-type] |
| 3 | +* cpo[meta id-type] |
4 | 4 | * std::execution[meta namespace] |
5 | 5 | * cpp26[meta cpp] |
6 | 6 |
|
7 | 7 | ```cpp |
8 | | -template<sender Sndr, queryable Env> |
9 | | -constexpr auto write-env(Sndr&& sndr, Env&& env); // exposition only |
| 8 | +namespace std::execution { |
| 9 | + inline constexpr unspecified write_env{}; |
| 10 | +} |
10 | 11 | ``` |
| 12 | +* unspecified[italic] |
11 | 13 |
|
12 | 14 | ## 概要 |
13 | | -`write-env`は、Senderアルゴリズム動作仕様定義で用いられる説明専用のSenderアダプタである。 |
| 15 | +`write_env`は、入力[Sender](sender.md)と[クエリ可能オブジェクト](../queryable.md)を受け取り、[Receiver](receiver.md)`rcvr`と[接続(connect)](connect.md)される際に、クエリ可能オブジェクトと[`get_env`](get_env.md)`(rcvr)`を合成した環境に関連付けられたReceiverと接続されるSenderを生成するSenderアダプタである。 |
14 | 16 |
|
15 | | -[クエリ可能オブジェクト](../queryable.md)`env`と接続先[Receiver](receiver.md)の環境を合成した、新たなクエリ可能オブジェクトに関連付けれられたSenderを生成する。 |
16 | 17 |
|
| 18 | +## 効果 |
| 19 | +説明用の式`sndr`と`env`に対して、`decltype((sndr))`が[`sender`](sender.md)を満たさない、もしくは`decltype((env))`が[`queryable`](../queryable.md)を満たさないとき、呼び出し式`write_env(sndr, env)`は不適格となる。 |
17 | 20 |
|
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] |
| 21 | +そうでなければ、呼び出し式`write_env(sndr, env)`は式[`make-sender`](make-sender.md)`(write_env, env, sndr)`と等価。 |
25 | 22 |
|
26 | 23 |
|
27 | 24 | ### Senderアルゴリズムタグ |
| 25 | +説明用の`write-env-t`を`decltype(auto(write_env))`とする。 |
| 26 | +
|
28 | 27 | Senderアルゴリズム動作説明用のクラステンプレート[`impls-for`](impls-for.md)に対して、下記の特殊化が定義される。 |
29 | 28 |
|
30 | 29 | ```cpp |
@@ -59,12 +58,20 @@ struct impls-for<write-env-t> : default-impls { |
59 | 58 | ### 言語 |
60 | 59 | - C++26 |
61 | 60 |
|
| 61 | +### 処理系 |
| 62 | +- [Clang](/implementation.md#clang): ?? |
| 63 | +- [GCC](/implementation.md#gcc): ?? |
| 64 | +- [ICC](/implementation.md#icc): ?? |
| 65 | +- [Visual C++](/implementation.md#visual_cpp): ?? |
| 66 | + |
62 | 67 |
|
63 | 68 | ## 関連項目 |
64 | 69 | - [`execution::on`](on.md) |
| 70 | +- [`execution::unstoppable`](unstoppable.md) |
65 | 71 |
|
66 | 72 |
|
67 | 73 | ## 参照 |
68 | 74 | - [P2300R10 `std::execution`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html) |
69 | 75 | - [P3396R1 std::execution wording fixes](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3396r1.html) |
70 | 76 | - [P3557R3 High-Quality Sender Diagnostics with Constexpr Exceptions](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3557r3.html) |
| 77 | +- [P3284R4 `write_env` and `unstoppable` Sender Adaptors](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3284r4.html) |
0 commit comments