200200
201201 < p class ="text-right "> < small >
202202 最終更新日時(UTC):
203- < span itemprop ="datePublished " content ="2026-01-20T09:16:30 ">
204- 2026年01月20日 09時16分30秒
203+ < span itemprop ="datePublished " content ="2026-04-23T11:01:38 ">
204+ 2026年04月23日 11時01分38秒
205205 </ span >
206206 < br />
207207 < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
@@ -329,7 +329,7 @@ <h3>クラステンプレート<code>awaitable-receiver</code></h3>
329329< span class ="p "> };</ span >
330330</ code > </ pre > </ div >
331331</ p >
332- < p > 説明用の式< code > rcvr</ code > を< code > awaitable-receiver</ code > 型の右辺値、< code > crcvr</ code > を< code > rcvr</ code > をconst参照する左辺値、< code > vs</ code > を式パック、< code > err</ code > を< code > Err</ code > 型の式とする。このとき</ p >
332+ < p > 説明用の式< code > rcvr</ code > を< code > awaitable-receiver</ code > 型の右辺値、< code > crcvr</ code > を< code > rcvr</ code > をconst参照する左辺値、< code > vs</ code > を式パック、< code > err</ code > を< code > Err</ code > 型の式とする。ある部分式 < code > expr </ code > に対する < code > MAKE-NOEXCEPT(expr) </ code > を < code > [] noexcept -> decltype(auto) { return (expr); }() </ code > と等価な式とする。 このとき</ p >
333333< ul >
334334< li >
335335< p > < code > < a href ="../../concepts/constructible_from.html "> constructible_from</ a > <result-type, decltype((vs))...></ code > を満たすとき、式< code > < a href ="set_value.html "> set_value</ a > (rcvr, vs...)</ code > は下記と等価。そうでなければ、式< code > set_value(rcvr, vs...)</ code > は< a class ="cpprefjp-defined-word " data-desc ="プログラムが適格でないこと。コンパイルエラーなどになる " href ="../../../implementation-compliance.html#dfn-ill-formed "> 不適格</ a > となる。</ p >
@@ -338,26 +338,30 @@ <h3>クラステンプレート<code>awaitable-receiver</code></h3>
338338< span class ="p "> }</ span > < span class ="w "> </ span > < span class ="k "> catch</ span > < span class ="p "> (...)</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
339339< span class ="w "> </ span > < span class ="n "> rcvr</ span > < span class ="p "> .</ span > < span class ="n "> result</ span > < span class ="o "> -</ span > < span class ="n "> ptr</ span > < span class ="o "> -></ span > < span class ="n "> < a href ="../../variant/variant/emplace.html "> template emplace</ a > </ span > < span class ="o "> <</ span > < span class ="mi "> 2</ span > < span class ="o "> ></ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../../exception/current_exception.html "> current_exception()</ a > </ span > < span class ="p "> );</ span >
340340< span class ="p "> }</ span >
341- < span class ="n "> rcvr</ span > < span class ="p "> .</ span > < span class ="n "> continuation</ span > < span class ="p "> .</ span > < span class ="n "> < a href ="../../coroutine/coroutine_handle/resume.html "> resume()</ a > </ span > < span class ="p "> ;</ span >
341+ < span class ="n "> MAKE </ span > < span class =" o " > - </ span > < span class =" n " > NOEXCEPT </ span > < span class =" p " > ( </ span > < span class =" n " > rcvr</ span > < span class ="p "> .</ span > < span class ="n "> continuation</ span > < span class ="p "> .</ span > < span class ="n "> < a href ="../../coroutine/coroutine_handle/resume.html "> resume()</ a > </ span > < span class ="p "> ) ;</ span >
342342</ code > </ pre > </ div >
343343</ p >
344344</ li >
345345< li >
346346< p > 式< code > < a href ="set_error.html "> set_error</ a > (rcvr, err)</ code > は下記と等価。</ p >
347- < p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="n "> rcvr</ span > < span class ="p "> .</ span > < span class ="n "> result</ span > < span class ="o "> -</ span > < span class ="n "> ptr</ span > < span class ="o "> -></ span > < span class ="n "> < a href ="../../variant/variant/emplace.html "> template emplace</ a > </ span > < span class ="o "> <</ span > < span class ="mi "> 2</ span > < span class ="o "> ></ span > < span class ="p "> (</ span > < span class ="n "> < i > AS-EXCEPT-PTR</ i > </ span > < span class ="p "> (</ span > < span class ="n "> err</ span > < span class ="p "> ));</ span >
348- < span class ="n "> rcvr</ span > < span class ="p "> .</ span > < span class ="n "> continuation</ span > < span class ="p "> .</ span > < span class ="n "> < a href ="../../coroutine/coroutine_handle/resume.html "> resume()</ a > </ span > < span class ="p "> ;</ span >
347+ < p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="k "> try</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
348+ < span class ="w "> </ span > < span class ="n "> rcvr</ span > < span class ="p "> .</ span > < span class ="n "> result</ span > < span class ="o "> -</ span > < span class ="n "> ptr</ span > < span class ="o "> -></ span > < span class ="n "> < a href ="../../variant/variant/emplace.html "> template emplace</ a > </ span > < span class ="o "> <</ span > < span class ="mi "> 2</ span > < span class ="o "> ></ span > < span class ="p "> (</ span > < span class ="n "> < i > AS-EXCEPT-PTR</ i > </ span > < span class ="p "> (</ span > < span class ="n "> err</ span > < span class ="p "> ));</ span >
349+ < span class ="p "> }</ span > < span class ="w "> </ span > < span class ="k "> catch</ span > < span class ="p "> (...)</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
350+ < span class ="w "> </ span > < span class ="n "> rcvr</ span > < span class ="p "> .</ span > < span class ="n "> result</ span > < span class ="o "> -</ span > < span class ="n "> ptr</ span > < span class ="o "> -></ span > < span class ="n "> < a href ="../../variant/variant/emplace.html "> template emplace</ a > </ span > < span class ="o "> <</ span > < span class ="mi "> 2</ span > < span class ="o "> ></ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../../exception/current_exception.html "> current_exception()</ a > </ span > < span class ="p "> );</ span >
351+ < span class ="p "> }</ span >
352+ < span class ="n "> MAKE</ span > < span class ="o "> -</ span > < span class ="n "> NOEXCEPT</ span > < span class ="p "> (</ span > < span class ="n "> rcvr</ span > < span class ="p "> .</ span > < span class ="n "> continuation</ span > < span class ="p "> .</ span > < span class ="n "> < a href ="../../coroutine/coroutine_handle/resume.html "> resume()</ a > </ span > < span class ="p "> );</ span >
349353</ code > </ pre > </ div >
350354</ p >
351355</ li >
352356< li >
353357< p > 式< code > < a href ="set_stopped.html "> set_stopped</ a > (rcvr)</ code > は下記と等価。</ p >
354- < p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="k "> static_cast</ span > < span class ="o "> <</ span > < span class ="n "> < a href ="../../coroutine/coroutine_handle.html "> coroutine_handle<></ a > </ span > < span class ="o "> ></ span > < span class ="p "> (</ span > < span class ="n "> rcvr</ span > < span class ="p "> .</ span > < span class ="n "> continuation</ span > < span class ="p "> .</ span > < span class ="n "> < a href ="../../coroutine/coroutine_handle/promise.html "> promise()</ a > </ span > < span class ="p "> .</ span > < span class ="n "> unhandled_stopped</ span > < span class ="p "> ()).</ span > < span class ="n "> < a href ="../../coroutine/coroutine_handle/resume.html "> resume()</ a > </ span > < span class ="p "> ;</ span >
358+ < p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="n " > MAKE </ span > < span class =" o " > - </ span > < span class =" n " > NOEXCEPT </ span > < span class =" p " > ( </ span > < span class =" k "> static_cast</ span > < span class ="o "> <</ span > < span class ="n "> < a href ="../../coroutine/coroutine_handle.html "> coroutine_handle<></ a > </ span > < span class ="o "> ></ span > < span class ="p "> (</ span > < span class ="n "> rcvr</ span > < span class ="p "> .</ span > < span class ="n "> continuation</ span > < span class ="p "> .</ span > < span class ="n "> < a href ="../../coroutine/coroutine_handle/promise.html "> promise()</ a > </ span > < span class ="p "> .</ span > < span class ="n "> unhandled_stopped</ span > < span class ="p "> ()).</ span > < span class ="n "> < a href ="../../coroutine/coroutine_handle/resume.html "> resume()</ a > </ span > < span class ="p "> ) ;</ span >
355359</ code > </ pre > </ div >
356360</ p >
357361</ li >
358362< li >
359363< p > < code > < a href ="../forwarding-query.html "> forwarding-query</ a > </ code > を満たす型の式< code > tag</ code > とパック式< code > as</ code > に対して、式< code > < a href ="get_env.html "> get_env</ a > (crcvr).query(tag, as...)</ code > は下記と等価。</ p >
360- < p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="n "> tag</ span > < span class ="p "> (</ span > < span class ="n "> < a href ="get_env.html "> get_env</ a > </ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../../utility/as_const.html "> as_const</ a > </ span > < span class ="p "> (</ span > < span class ="n "> crcvr</ span > < span class ="p "> .</ span > < span class ="n "> continuation</ span > < span class ="p "> .</ span > < span class ="n "> < a href ="../../coroutine/coroutine_handle/promise.html "> promise()</ a > </ span > < span class ="p "> )),</ span > < span class ="w "> </ span > < span class ="n "> as</ span > < span class ="p "> ...)</ span >
364+ < p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="n "> tag</ span > < span class ="p "> (</ span > < span class ="n "> < a href ="get_env.html "> get_env</ a > </ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../../utility/as_const.html "> as_const</ a > </ span > < span class ="p "> (</ span > < span class ="n "> MAKE </ span > < span class =" o " > - </ span > < span class =" n " > NOEXCEPT </ span > < span class =" p " > ( </ span > < span class =" n " > crcvr</ span > < span class ="p "> .</ span > < span class ="n "> continuation</ span > < span class ="p "> .</ span > < span class ="n "> < a href ="../../coroutine/coroutine_handle/promise.html "> promise()</ a > </ span > < span class ="p "> ) )),</ span > < span class ="w "> </ span > < span class ="n "> as</ span > < span class ="p "> ...)</ span >
361365</ code > </ pre > </ div >
362366</ p >
363367</ li >
@@ -416,6 +420,7 @@ <h2>参照</h2>
416420< li > < a href ="https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3570r2.html " target ="_blank "> P3570R2 optional variants in sender/receiver</ a > </ li >
417421< li > < a href ="https://cplusplus.github.io/LWG/issue4358 " target ="_blank "> LWG4358 §[exec.as.awaitable] is using "Preconditions:" when it should probably be described in the constraint</ a > </ li >
418422< li > < a href ="https://cplusplus.github.io/LWG/issue4360 " target ="_blank "> LWG4360 < code > awaitable-sender</ code > concept should qualify use of < code > awaitable-receiver</ code > type</ a > </ li >
423+ < li > < a href ="https://cplusplus.github.io/LWG/issue4133 " target ="_blank "> LWG4133 < code > awaitable-receiver</ code > 's members are potentially throwing</ a > </ li >
419424</ ul > </ div >
420425
421426 </ div >
0 commit comments