200
200
201
201
< p class ="text-right "> < small >
202
202
最終更新日時(UTC):
203
- < span itemprop ="datePublished " content ="2020-02-20T14:43:22 ">
204
- 2020年02月20日 14時43分22秒
203
+ < span itemprop ="datePublished " content ="2025-04-04T09:58:25 ">
204
+ 2025年04月04日 09時58分25秒
205
205
</ span >
206
206
< br />
207
207
< span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
208
- < span itemprop ="name "> Mitsuru Kariya </ span >
208
+ < span itemprop ="name "> yoh </ span >
209
209
</ span >
210
210
が更新
211
211
</ small > </ p >
227
227
< div class ="identifier-type "> function</ div > < div class ="header "> <stop_token></ div > < h1 itemprop ="name "> < span class ="namespace " title ="namespace std "> std::</ span > < span class ="class " title ="class stop_callback "> stop_callback::</ span > < span class ="token "> コンストラクタ</ span > < span class ="cpp cpp20 " title ="C++20で追加 "> (C++20)</ span > </ h1 >
228
228
< div itemprop ="articleBody "> < p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="nc "> C</ span > < span class ="o "> ></ span >
229
229
< span class ="k "> explicit</ span > < span class ="n "> stop_callback</ span > < span class ="p "> (</ span > < span class ="k "> const</ span > < span class ="n "> stop_token</ span > < span class ="o "> &</ span > < span class ="n "> st</ span > < span class ="p "> ,</ span > < span class ="n "> C</ span > < span class ="o "> &&</ span > < span class ="n "> cb</ span > < span class ="p "> )</ span >
230
- < span class ="k "> noexcept</ span > < span class ="p "> (</ span > < span class ="n "> is_nothrow_constructible_v</ span > < span class ="o "> <</ span > < span class ="n "> Callback </ span > < span class ="p "> ,</ span > < span class ="n "> C</ span > < span class ="o "> ></ span > < span class ="p "> );</ span > < span class ="c1 "> // (1)</ span >
230
+ < span class ="k "> noexcept</ span > < span class ="p "> (</ span > < span class ="n "> is_nothrow_constructible_v</ span > < span class ="o "> <</ span > < span class ="n "> CallbackFn </ span > < span class ="p "> ,</ span > < span class ="n "> C</ span > < span class ="o "> ></ span > < span class ="p "> );</ span > < span class ="c1 "> // (1)</ span >
231
231
< span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="nc "> C</ span > < span class ="o "> ></ span >
232
232
< span class ="k "> explicit</ span > < span class ="n "> stop_callback</ span > < span class ="p "> (</ span > < span class ="n "> stop_token</ span > < span class ="o "> &&</ span > < span class ="n "> st</ span > < span class ="p "> ,</ span > < span class ="n "> C</ span > < span class ="o "> &&</ span > < span class ="n "> cb</ span > < span class ="p "> )</ span >
233
- < span class ="k "> noexcept</ span > < span class ="p "> (</ span > < span class ="n "> is_nothrow_constructible_v</ span > < span class ="o "> <</ span > < span class ="n "> Callback </ span > < span class ="p "> ,</ span > < span class ="n "> C</ span > < span class ="o "> ></ span > < span class ="p "> );</ span > < span class ="c1 "> // (2)</ span >
233
+ < span class ="k "> noexcept</ span > < span class ="p "> (</ span > < span class ="n "> is_nothrow_constructible_v</ span > < span class ="o "> <</ span > < span class ="n "> CallbackFn </ span > < span class ="p "> ,</ span > < span class ="n "> C</ span > < span class ="o "> ></ span > < span class ="p "> );</ span > < span class ="c1 "> // (2)</ span >
234
234
235
235
< span class ="n "> stop_callback</ span > < span class ="p "> (</ span > < span class ="k "> const</ span > < span class ="n "> stop_callback</ span > < span class ="o "> &</ span > < span class ="p "> )</ span > < span class ="o "> =</ span > < span class ="k "> delete</ span > < span class ="p "> ;</ span > < span class ="c1 "> // (3)</ span >
236
236
< span class ="n "> stop_callback</ span > < span class ="p "> (</ span > < span class ="n "> stop_callback</ span > < span class ="o "> &&</ span > < span class ="p "> )</ span > < span class ="o "> =</ span > < span class ="k "> delete</ span > < span class ="p "> ;</ span > < span class ="c1 "> // (4)</ span >
@@ -244,15 +244,15 @@ <h2>概要</h2>
244
244
< li > (4) : ムーブコンストラクタ。ムーブ不可。</ li >
245
245
</ ul >
246
246
< h2 > < a class ="cpprefjp-defined-word " data-desc ="関数等の意味論を構成する要素の1つ。Mandates。満たさなければプログラムが不適格となる要件。この要件は、オーバーロード解決によって選択された関数内での`static_assert`の定数条件式や、関数に対するdelete宣言などで表現できる "> 適格要件</ a > </ h2 >
247
- < p > クラステンプレートのテンプレート引数< code > Callback </ code > とコンストラクタのテンプレート引数< code > C</ code > は< code > < a href ="../../concepts/constructible_from.html "> constructible_from</ a > <Callback , C></ code > 制約を満たさなければならない。</ p >
247
+ < p > クラステンプレートのテンプレート引数< code > CallbackFn </ code > とコンストラクタのテンプレート引数< code > C</ code > は< code > < a href ="../../concepts/constructible_from.html "> constructible_from</ a > <CallbackFn , C></ code > 制約を満たさなければならない。</ p >
248
248
< h2 > < a class ="cpprefjp-defined-word " data-desc ="関数等の意味論を構成する要素の1つ。Preconditions。関数呼び出し時に満たされていると関数が想定する条件。満たさなければ未定義の動作。契約属性の`[[expects]]`に相当 "> 事前条件</ a > </ h2 >
249
- < p > クラステンプレートのテンプレート引数< code > Callback </ code > とコンストラクタのテンプレート引数< code > C</ code > は< code > < a href ="../../concepts/constructible_from.html "> constructible_from</ a > <Callback , C></ code > 制約を満たさなければならない。</ p >
249
+ < p > クラステンプレートのテンプレート引数< code > CallbackFn </ code > とコンストラクタのテンプレート引数< code > C</ code > は< code > < a href ="../../concepts/constructible_from.html "> constructible_from</ a > <CallbackFn , C></ code > 制約を満たさなければならない。</ p >
250
250
< h2 > 効果</ h2 >
251
- < p > コンストラクタの引数に渡した< code > cb</ code > を< code > std::forward<Callback >(cb)</ code > で転送して、メンバ変数(仮に< code > callback</ code > とする)を初期化する。</ p >
252
- < p > もし< code > st.< a href ="../stop_token/stop_requested.html "> stop_requested()</ a > == true</ code > の場合は、コンストラクタを呼び出したスレッドの中で< code > std::forward<Callback >(callback)()</ code > を評価し、コールバックを呼び出す。したがってこのコールバックの呼び出しはコンストラクタから処理が戻るより前に完了する。</ p >
253
- < p > そうでない場合は、< code > st</ code > が所有している停止状態への所有権を取得して停止状態を共有し、その停止状態に対する最初の< code > < a href ="../stop_source/request_stop.html "> request_stop()</ a > </ code > の呼び出しで< code > std::forward<Callback >(callback)()</ code > を評価するようなコールバックを登録する。
251
+ < p > コンストラクタの引数に渡した< code > cb</ code > を< code > std::forward<CallbackFn >(cb)</ code > で転送して、メンバ変数(仮に< code > callback</ code > とする)を初期化する。</ p >
252
+ < p > もし< code > st.< a href ="../stop_token/stop_requested.html "> stop_requested()</ a > == true</ code > の場合は、コンストラクタを呼び出したスレッドの中で< code > std::forward<CallbackFn >(callback)()</ code > を評価し、コールバックを呼び出す。したがってこのコールバックの呼び出しはコンストラクタから処理が戻るより前に完了する。</ p >
253
+ < p > そうでない場合は、< code > st</ code > が所有している停止状態への所有権を取得して停止状態を共有し、その停止状態に対する最初の< code > < a href ="../stop_source/request_stop.html "> request_stop()</ a > </ code > の呼び出しで< code > std::forward<CallbackFn >(callback)()</ code > を評価するようなコールバックを登録する。
254
254
< code > st</ code > が停止状態を所有していない場合は何もしない。</ p >
255
- < p > もし< code > std::forward<Callback >(callback)()</ code > の呼び出しが< a class ="cpprefjp-defined-word " data-desc ="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態 "> 例外</ a > によって終了した場合は、< code > < a href ="../../exception/terminate.html "> std::terminate()</ a > </ code > 関数が呼び出され、プログラムが異常終了する。</ p >
255
+ < p > もし< code > std::forward<CallbackFn >(callback)()</ code > の呼び出しが< a class ="cpprefjp-defined-word " data-desc ="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態 "> 例外</ a > によって終了した場合は、< code > < a href ="../../exception/terminate.html "> std::terminate()</ a > </ code > 関数が呼び出され、プログラムが異常終了する。</ p >
256
256
< h2 > < a class ="cpprefjp-defined-word " data-desc ="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態 "> 例外</ a > </ h2 >
257
257
< p > メンバ変数< code > callback</ code > を< code > cb</ code > で初期化する際に< a class ="cpprefjp-defined-word " data-desc ="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態 "> 例外</ a > が発生する場合は、その< a class ="cpprefjp-defined-word " data-desc ="問題が発生したときに、現在実行位置を過去に通過・記録した位置に戻し、文脈情報を添えて紐づけられた処理(例外ハンドラー)を呼び出す仕組み。またはその事態 "> 例外</ a > を送出する。</ p >
258
258
< h2 > 例</ h2 >
0 commit comments