200
200
201
201
< p class ="text-right "> < small >
202
202
最終更新日時(UTC):
203
- < span itemprop ="datePublished " content ="2025-07-31T13:41:23 ">
204
- 2025年07月31日 13時41分23秒
203
+ < span itemprop ="datePublished " content ="2025-07-31T14:01:31 ">
204
+ 2025年07月31日 14時01分31秒
205
205
</ span >
206
206
< br />
207
207
< span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
@@ -288,8 +288,8 @@ <h3>Senderアルゴリズムタグ <code>schedule_from</code></h3>
288
288
< ul >
289
289
< li > ローカルクラス< code > state-type</ code > のオブジェクトは< a href ="../../../lang/cpp17/structured_bindings.html "> 構造化束縛</ a > における初期化子として利用できる。</ li >
290
290
< li >
291
- < p > 説明用のパック< code > Sigs</ code > を< code > < a href ="completion_signatures_of_t.html "> completion_signatures_of_t</ a > << a href ="child-type.html "> child-type</ a > <Sndr>, < a href ="../forwarding_query.html "> FWD-ENV-T</ a > (< a href ="env_of_t.html "> env_of_t</ a > <Rcvr>)></ code > による< code > < a href ="completion_signatures.html "> completion_signatures</ a > </ code > 特殊化のテンプレートパラメータと定義する。説明用のエイリアステンプレート< code > as-tuple<Tag(Args...)></ code > を< code > < a href ="decayed-tuple.html "> decayed-tuple</ a > <Args...></ code > と定義する。型< code > variant_t</ code > は下記定義において重複削除した型となる。</ p >
292
- < p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="n "> < a href ="../../variant/variant.html "> variant</ a > </ span > < span class ="o "> <</ span > < span class ="n "> < a href ="../../variant/monostate.html "> monostate</ a > </ span > < span class ="p "> ,</ span > < span class ="n "> as</ span > < span class ="o "> -</ span > < span class ="n "> < a href ="../../tuple/tuple.html "> tuple</ a > </ span > < span class ="o "> <</ span > < span class ="n "> Sigs</ span > < span class ="o "> ></ span > < span class ="p "> ...</ span > < span class ="o "> ></ span >
291
+ < p > 説明用のパック< code > Sigs</ code > を< code > < a href ="completion_signatures_of_t.html "> completion_signatures_of_t</ a > << a href ="child-type.html "> child-type</ a > <Sndr>, < a href ="../forwarding_query.html "> FWD-ENV-T</ a > (< a href ="env_of_t.html "> env_of_t</ a > <Rcvr>)></ code > による< code > < a href ="completion_signatures.html "> completion_signatures</ a > </ code > 特殊化のテンプレートパラメータと定義する。説明用のエイリアステンプレート< code > as-tuple<Tag(Args...)></ code > を< code > < a href ="decayed-tuple.html "> decayed-tuple</ a > <Tag, Args...></ code > と定義し、説明用の変数テンプレート< code > is-nothrow-decay-copy-sig<Tag(Args...)></ code > を型< code > Args...</ code > が全て< a class ="cpprefjp-defined-word " data-desc ="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態 "> 例外</ a > 送出せずdecayコピー可能ならば値< code > true</ code > 、そうでなければ< code > false</ code > となる< code > bool const</ code > 型のコア定数式と定義する。説明用のパック< code > error-completion</ code > を、< code > (is-nothrow-decay-copy-sig<Sigs> &&...)</ code > が< code > false</ code > ならば< code > < a href ="set_error.html "> set_error_t</ a > (< a href ="../../exception/exception_ptr.html "> exception_ptr</ a > )</ code > 、そうでなければ空のパックと定義する。型< code > variant_t</ code > は下記定義において重複削除した型となる。</ p >
292
+ < p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="n "> < a href ="../../variant/variant.html "> variant</ a > </ span > < span class ="o "> <</ span > < span class ="n "> < a href ="../../variant/monostate.html "> monostate</ a > </ span > < span class ="p "> ,</ span > < span class ="n "> as</ span > < span class ="o "> -</ span > < span class ="n "> < a href ="../../tuple/tuple.html "> tuple</ a > </ span > < span class ="o "> <</ span > < span class ="n "> Sigs</ span > < span class ="o "> ></ span > < span class ="p "> ..., </ span > < span class =" n " > error </ span > < span class =" o " > - </ span > < span class =" n " > completion </ span > < span class =" p " > ... </ span > < span class ="o "> ></ span >
293
293
</ code > </ pre > </ div >
294
294
</ p >
295
295
</ li >
@@ -301,15 +301,13 @@ <h3>Senderアルゴリズムタグ <code>schedule_from</code></h3>
301
301
< p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="p "> []</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="nc "> Tag</ span > < span class ="p "> ,</ span > < span class ="n "> class</ span > < span class ="p "> ...</ span > < span class ="n "> Args</ span > < span class ="o "> ></ span > < span class ="p "> (</ span > < span class ="k "> auto</ span > < span class ="p "> ,</ span > < span class ="k "> auto</ span > < span class ="o "> &</ span > < span class ="n "> state</ span > < span class ="p "> ,</ span > < span class ="k "> auto</ span > < span class ="o "> &</ span > < span class ="n "> rcvr</ span > < span class ="p "> ,</ span > < span class ="n "> Tag</ span > < span class ="p "> ,</ span > < span class ="n "> Args</ span > < span class ="o "> &&</ span > < span class ="p "> ...</ span > < span class ="n "> args</ span > < span class ="p "> )</ span > < span class ="k "> noexcept</ span >
302
302
< span class ="o "> -></ span > < span class ="kt "> void</ span > < span class ="p "> {</ span >
303
303
< span class ="k "> using</ span > < span class ="n "> result_t</ span > < span class ="o "> =</ span > < span class ="n "> < a href ="decayed-tuple.html "> decayed-tuple</ a > </ span > < span class ="o "> <</ span > < span class ="n "> Tag</ span > < span class ="p "> ,</ span > < span class ="n "> Args</ span > < span class ="p "> ...</ span > < span class ="o "> ></ span > < span class ="p "> ;</ span >
304
- < span class ="k "> constexpr</ span > < span class ="kt "> bool</ span > < span class ="n "> nothrow</ span > < span class ="o "> =</ span > < span class ="n "> < a href ="../../type_traits/is_nothrow_constructible.html "> is_nothrow_constructible_v</ a > </ span > < span class ="o "> <</ span > < span class ="n "> result_t </ span > < span class ="p " > , </ span > < span class ="n "> Tag </ span > < span class ="p "> ,</ span > < span class ="n "> Args</ span > < span class ="p " > ... </ span > < span class ="o "> > </ span > < span class ="p "> ;</ span >
304
+ < span class ="k "> constexpr</ span > < span class ="kt "> bool</ span > < span class ="n "> nothrow</ span > < span class ="o "> =</ span > < span class ="p " > ( </ span > < span class =" n "> < a href ="../../type_traits/is_nothrow_constructible.html "> is_nothrow_constructible_v</ a > </ span > < span class ="o "> <</ span > < span class ="n "> < a href =" ../../type_traits/decay.html " > decay_t </ a > </ span > < span class ="o " > < </ span > < span class ="n "> Args </ span > < span class ="o " > > </ span > < span class =" p "> ,</ span > < span class ="n "> Args</ span > < span class ="o " > > </ span > < span class ="o "> && </ span > < span class ="p "> ...) ;</ span >
305
305
306
306
< span class ="k "> try</ span > < span class ="p "> {</ span >
307
307
< span class ="n "> state</ span > < span class ="p "> .</ span > < span class ="n "> async</ span > < span class ="o "> -</ span > < span class ="n "> result</ span > < span class ="p "> .</ span > < span class ="n "> < a href ="../../variant/variant/emplace.html "> template emplace</ a > </ span > < span class ="o "> <</ span > < span class ="n "> result_t</ span > < span class ="o "> ></ span > < span class ="p "> (</ span > < span class ="n "> Tag</ span > < span class ="p "> (),</ span > < span class ="n "> < a href ="../../utility/forward.html "> std::forward</ a > </ span > < span class ="o "> <</ span > < span class ="n "> Args</ span > < span class ="o "> ></ span > < span class ="p "> (</ span > < span class ="n "> args</ span > < span class ="p "> )...);</ span >
308
308
< span class ="p "> }</ span > < span class ="k "> catch</ span > < span class ="p "> (...)</ span > < span class ="p "> {</ span >
309
- < span class ="k "> if</ span > < span class ="k "> constexpr</ span > < span class ="p "> (</ span > < span class ="o "> !</ span > < span class ="n "> nothrow</ span > < span class ="p "> )</ span > < span class ="p "> {</ span >
310
- < span class ="n "> < a href ="set_error.html "> set_error</ a > </ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../../utility/move.html "> std::move</ a > </ span > < span class ="p "> (</ span > < span class ="n "> rcvr</ span > < span class ="p "> ),</ span > < span class ="n "> < a href ="../../exception/current_exception.html "> current_exception()</ a > </ span > < span class ="p "> );</ span >
311
- < span class ="k "> return</ span > < span class ="p "> ;</ span >
312
- < span class ="p "> }</ span >
309
+ < span class ="k "> if</ span > < span class ="k "> constexpr</ span > < span class ="p "> (</ span > < span class ="o "> !</ span > < span class ="n "> nothrow</ span > < span class ="p "> )</ span >
310
+ < span class ="n "> state</ span > < span class ="p "> .</ span > < span class ="n "> async</ span > < span class ="o "> -</ span > < span class ="n "> result</ span > < span class ="p "> .</ span > < span class ="n "> < a href ="../../variant/variant/emplace.html "> template emplace</ a > </ span > < span class ="o "> <</ span > < span class ="n "> < a href ="../../tuple/tuple.html "> tuple</ a > </ span > < span class ="o "> <</ span > < span class ="n "> < a href ="set_error.html "> set_error_t</ a > </ span > < span class ="p "> ,</ span > < span class ="n "> < a href ="../../exception/exception_ptr.html "> exception_ptr</ a > </ span > < span class ="o "> >></ span > < span class ="p "> (</ span > < span class ="n "> < a href ="set_error.html "> set_error</ a > </ span > < span class ="p "> ,</ span > < span class ="n "> < a href ="../../exception/current_exception.html "> current_exception()</ a > </ span > < span class ="p "> );</ span >
313
311
< span class ="p "> }</ span >
314
312
< span class ="n "> < a href ="start.html "> start</ a > </ span > < span class ="p "> (</ span > < span class ="n "> state</ span > < span class ="p "> .</ span > < span class ="n "> op</ span > < span class ="o "> -</ span > < span class ="n "> state</ span > < span class ="p "> );</ span >
315
313
< span class ="p "> };</ span >
@@ -379,6 +377,7 @@ <h2>参照</h2>
379
377
< li > < a href ="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2999r3.html " target ="_blank "> P2999R3 Sender Algorithm Customization</ a > </ li >
380
378
< li > < a href ="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html " target ="_blank "> P2300R10 < code > std::execution</ code > </ a > </ li >
381
379
< li > < a href ="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3396r1.html " target ="_blank "> P3396R1 std::execution wording fixes</ a > </ li >
380
+ < li > < a href ="https://cplusplus.github.io/LWG/issue4198 " target ="_blank "> LWG 4198. < code > schedule_from</ code > isn't starting the schedule sender if decay-copying results throws</ a > </ li >
382
381
< li > < a href ="https://cplusplus.github.io/LWG/issue4203 " target ="_blank "> LWG 4203. Constraints on < code > get-state</ code > functions are incorrect</ a > </ li >
383
382
</ ul > </ div >
384
383
0 commit comments