22<feed xmlns =" http://www.w3.org/2005/Atom" >
33 <title >cpprefjp - C++日本語リファレンス</title >
44 <link href =" https://cpprefjp.github.io" />
5- <updated >2025-05-30T14:46:46.645439 </updated >
6- <id >194ee18a-3a5d-4072-9623-f1601230c457 </id >
5+ <updated >2025-05-30T15:44:19.949279 </updated >
6+ <id >20787424-1adb-434e-917e-07e5b8108395 </id >
77
88
9+ <entry >
10+ <title >as_awaitable -- execution/as_awaitable: 概要増補 (#1384)</title >
11+ <link href =" https://cpprefjp.github.io/reference/execution/execution/as_awaitable.html" />
12+ <id >1a6cd9cb028ec39fe556b218ffebd57039df314d:reference/execution/execution/as_awaitable.md</id >
13+ <updated >2025-05-31T00:39:36+09:00</updated >
14+
15+ <summary type =" html" >< pre>< code> diff --git a/reference/execution/execution/as_awaitable.md b/reference/execution/execution/as_awaitable.md
16+ index 96fb0d803..eede9fa1b 100644
17+ --- a/reference/execution/execution/as_awaitable.md
18+ +++ b/reference/execution/execution/as_awaitable.md
19+ @@ -13,7 +13,19 @@ namespace std::execution {
20+ * unspecified[italic]
21+
22+ ## 概要
23+ -`as_awaitable`は、オブジェクトを特定コルーチン内でAwaitableに変換するカスタマイゼーションポイントオブジェクトである。
24+ +`as_awaitable`は、オブジェクトを特定の[コルーチン](/lang/cpp20/coroutines.md)内でAwaitableに変換するカスタマイゼーションポイントオブジェクトである。
25+ +
26+ +Promise型`p`をもつコルーチンにおいて、Await式`co_await as_awaitable(expr, p)`は下記のように動作する。
27+ +
28+ +- 式`expr.as_awaitable(p)`が有効ならば、同式が返すAwaitableオブジェクトに対してAwait式を実行する。
29+ +- `expr`が[単一の値を送信するSender](single-sender.md)であり、Promise型が停止完了ハンドラを定義するならば、下記動作を行う。
30+ + - Senderを[接続(connect)](connect.md)し、結果[Operation State](operation_state.md)をAwaitableオブジェクトに格納する。
31+ + - コルーチンを中断し、Operation Stateを[開始(start)](start.md)する。
32+ + - [クエリオブジェクト](../queryable.md)による[Receiver](receiver.md)環境への問い合わせは、Promise型に関連付けられた環境(`get_env`)へと転送される。
33+ + - Senderが[値完了](set_value.md)した場合、送信値をAwait式の結果としてコルーチンを再開する。
34+ + - Senderが[エラー完了](set_error.md)した場合、エラー値を例外としてコルーチンから再スローする。
35+ + - Senderが[停止完了](set_stopped.md)した場合、停止完了ハンドラ(`unhandled_stopped`)が返す別のコルーチンを再開させる。
36+ +- そうでなければ、式`expr`に対してAwait式を実行する。
37+
38+
39+ ## 効果
40+ @@ -43,6 +55,7 @@ namespace std::execution {
41+ }
42+ ```
43+ * single-sender[link single-sender.md]
44+ +* env_of_t[link env_of_t.md]
45+ * sender_to[link sender_to.md]
46+ * convertible_to[link /reference/concepts/convertible_to.md]
47+ * coroutine_handle& lt;& gt;[link /reference/coroutine/coroutine_handle.md]
48+ @@ -102,7 +115,7 @@ struct awaitable-receiver {
49+
50+ 説明用の式`rcvr`を`awaitable-reciever`型の右辺値、`crcvr`を`rcvr`をconst参照する左辺値、`vs`を式パック、`err`を`Err`型の式とする。このとき
51+
52+ -- [`constructible_from`](/reference/concepts/constructible_from.md)`& lt;result-type, decltype((vs))...& gt;`を満たすとき、式`set_value(rcvr, vs...)`は下記と等価。そうでなければ、式`set_value(rcvr, vs...)`は不適格となる。
53+ +- [`constructible_from`](/reference/concepts/constructible_from.md)`& lt;result-type, decltype((vs))...& gt;`を満たすとき、式[`set_value`](set_value.md)`(rcvr, vs...)`は下記と等価。そうでなければ、式`set_value(rcvr, vs...)`は不適格となる。
54+
55+ ```cpp
56+ try {
57+ @@ -116,7 +129,7 @@ struct awaitable-receiver {
58+ * current_exception()[link /reference/exception/current_exception.md]
59+ * resume()[link /reference/coroutine/coroutine_handle/resume.md]
60+
61+ -- 式`set_error(rcvr, err)`は下記と等価。
62+ +- 式[`set_error`](set_error.md)`(rcvr, err)`は下記と等価。
63+
64+ ```cpp
65+ rcvr.result-ptr-& gt;template emplace& lt;2& gt;(AS-EXCEPT-PTR(err));
66+ @@ -125,7 +138,7 @@ struct awaitable-receiver {
67+ * template emplace[link /reference/variant/variant/emplace.md]
68+ * resume()[link /reference/coroutine/coroutine_handle/resume.md]
69+
70+ -- 式`set_stopped(rcvr)`は下記と等価。
71+ +- 式[`set_stopped`](set_stopped.md)`(rcvr)`は下記と等価。
72+
73+ ```cpp
74+ static_cast& lt;coroutine_handle& lt;& gt;& gt;(rcvr.continuation.promise().unhandled_stopped()).resume();
75+ @@ -134,7 +147,7 @@ struct awaitable-receiver {
76+ * promise()[link /reference/coroutine/coroutine_handle/promise.md]
77+ * resume()[link /reference/coroutine/coroutine_handle/resume.md]
78+
79+ -- [`forwarding-query`](../forwarding-query.md)を満たす型の式`tag`とパック式`as`に対して、[`get_env`](get_env.md)`(crcvr).query(tag, as...)`は下記と等価。
80+ +- [`forwarding-query`](../forwarding-query.md)を満たす型の式`tag`とパック式`as`に対して、式[`get_env`](get_env.md)`(crcvr).query(tag, as...)`は下記と等価。
81+
82+ ```cpp
83+ tag(get_env(as_const(crcvr.continuation.promise())), as...)
84+ < /code>< /pre> </summary >
85+
86+ <author >
87+ <name >yoh</name >
88+ 89+ </author >
90+ </entry >
91+
992 <entry >
1093 <title >class-type -- execution: as_awaitable (#1384)</title >
1194 <link href =" https://cpprefjp.github.io/reference/execution/class-type.html" />
@@ -1384,31 +1467,4 @@ index 000000000..c03171959
13841467 </author >
13851468 </entry >
13861469
1387- <entry >
1388- <title >with_awaitable_senders -- execution/with_awaitable_senders: remove forbid chars</title >
1389- <link href =" https://cpprefjp.github.io/reference/execution/execution/with_awaitable_senders.html" />
1390- <id >a1eaff0ecb6591461ea27f6eb861a47fdb57d1d9:reference/execution/execution/with_awaitable_senders.md</id >
1391- <updated >2025-05-30T17:17:23+09:00</updated >
1392-
1393- <summary type =" html" >< pre>< code> diff --git a/reference/execution/execution/with_awaitable_senders.md b/reference/execution/execution/with_awaitable_senders.md
1394- index 429e09102..ec76e23ad 100644
1395- --- a/reference/execution/execution/with_awaitable_senders.md
1396- +++ b/reference/execution/execution/with_awaitable_senders.md
1397- @@ -173,7 +173,7 @@ value=42
1398-
1399-
1400- ## 関連項目
1401- -- [`execution::as_awaitable`](as_awaitable.md.nolink)
1402- +- [`execution::as_awaitable`](as_awaitable.md.nolink)
1403- - [コルーチン](/lang/cpp20/coroutines.md)
1404-
1405-
1406- < /code>< /pre> </summary >
1407-
1408- <author >
1409- <name >yoh</name >
1410- 1411- </author >
1412- </entry >
1413-
14141470</feed >
0 commit comments