200200
201201 < p class ="text-right "> < small >
202202 最終更新日時(UTC):
203- < span itemprop ="datePublished " content ="2024-06-11T13:45:38 ">
204- 2024年06月11日 13時45分38秒
203+ < span itemprop ="datePublished " content ="2024-12-21T00:39:21 ">
204+ 2024年12月21日 00時39分21秒
205205 </ span >
206206 < br />
207207 < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
225225 < div class ="col-sm-12 content-body ">
226226
227227 < div class ="identifier-type "> function</ div > < div class ="header "> <atomic></ div > < h1 itemprop ="name "> < span class ="namespace " title ="namespace std "> std::</ span > < span class ="class " title ="class atomic_ref "> atomic_ref::</ span > < span class ="token "> compare_exchange_strong</ span > < span class ="cpp cpp20 " title ="C++20で追加 "> (C++20)</ span > </ h1 >
228- < div itemprop ="articleBody "> < p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="kt "> bool</ span > < span class ="nf "> compare_exchange_strong</ span > < span class ="p "> (</ span > < span class ="n "> T</ span > < span class ="o "> &</ span > < span class ="n "> expected</ span > < span class ="p "> ,</ span >
229- < span class ="n "> T</ span > < span class ="n "> desired</ span > < span class ="p "> ,</ span >
230- < span class ="n "> < a href ="../memory_order.html "> memory_order</ a > </ span > < span class ="n "> success</ span > < span class ="p "> ,</ span >
231- < span class ="n "> < a href ="../memory_order.html "> memory_order</ a > </ span > < span class ="n "> failure</ span >
232- < span class ="p "> )</ span > < span class ="k "> const</ span > < span class ="k "> noexcept</ span > < span class ="p "> ;</ span > < span class ="c1 "> // (1)</ span >
233-
234- < span class ="kt "> bool</ span > < span class ="nf "> compare_exchange_strong</ span > < span class ="p "> (</ span > < span class ="n "> T</ span > < span class ="o "> &</ span > < span class ="n "> expected</ span > < span class ="p "> ,</ span >
235- < span class ="n "> T</ span > < span class ="n "> desired</ span > < span class ="p "> ,</ span >
236- < span class ="n "> < a href ="../memory_order.html "> memory_order</ a > </ span > < span class ="n "> order</ span > < span class ="o "> =</ span > < span class ="n "> < a href ="../memory_order.html "> memory_order_seq_cst</ a > </ span >
237- < span class ="p "> )</ span > < span class ="k "> const</ span > < span class ="k "> noexcept</ span > < span class ="p "> ;</ span > < span class ="c1 "> // (2)</ span >
228+ < div itemprop ="articleBody "> < p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="kt "> bool</ span >
229+ < span class ="nf "> compare_exchange_strong</ span > < span class ="p "> (</ span > < span class ="n "> T</ span > < span class ="o "> &</ span > < span class ="n "> expected</ span > < span class ="p "> ,</ span >
230+ < span class ="n "> T</ span > < span class ="n "> desired</ span > < span class ="p "> ,</ span >
231+ < span class ="n "> < a href ="../memory_order.html "> memory_order</ a > </ span > < span class ="n "> success</ span > < span class ="p "> ,</ span >
232+ < span class ="n "> < a href ="../memory_order.html "> memory_order</ a > </ span > < span class ="n "> failure</ span >
233+ < span class ="p "> )</ span > < span class ="k "> const</ span > < span class ="k "> noexcept</ span > < span class ="p "> ;</ span > < span class ="c1 "> // (1) C++20</ span >
234+ < span class ="kt "> bool</ span >
235+ < span class ="nf "> compare_exchange_strong</ span > < span class ="p "> (</ span > < span class ="n "> value_type</ span > < span class ="o "> &</ span > < span class ="n "> expected</ span > < span class ="p "> ,</ span >
236+ < span class ="n "> value_type</ span > < span class ="n "> desired</ span > < span class ="p "> ,</ span >
237+ < span class ="n "> < a href ="../memory_order.html "> memory_order</ a > </ span > < span class ="n "> success</ span > < span class ="p "> ,</ span >
238+ < span class ="n "> < a href ="../memory_order.html "> memory_order</ a > </ span > < span class ="n "> failure</ span >
239+ < span class ="p "> )</ span > < span class ="k "> const</ span > < span class ="k "> noexcept</ span > < span class ="p "> ;</ span > < span class ="c1 "> // (1) C++26</ span >
240+
241+ < span class ="kt "> bool</ span >
242+ < span class ="nf "> compare_exchange_strong</ span > < span class ="p "> (</ span > < span class ="n "> T</ span > < span class ="o "> &</ span > < span class ="n "> expected</ span > < span class ="p "> ,</ span >
243+ < span class ="n "> T</ span > < span class ="n "> desired</ span > < span class ="p "> ,</ span >
244+ < span class ="n "> < a href ="../memory_order.html "> memory_order</ a > </ span > < span class ="n "> order</ span > < span class ="o "> =</ span > < span class ="n "> < a href ="../memory_order.html "> memory_order_seq_cst</ a > </ span >
245+ < span class ="p "> )</ span > < span class ="k "> const</ span > < span class ="k "> noexcept</ span > < span class ="p "> ;</ span > < span class ="c1 "> // (2) C++20</ span >
246+ < span class ="kt "> bool</ span >
247+ < span class ="nf "> compare_exchange_strong</ span > < span class ="p "> (</ span > < span class ="n "> value_type</ span > < span class ="o "> &</ span > < span class ="n "> expected</ span > < span class ="p "> ,</ span >
248+ < span class ="n "> value_type</ span > < span class ="n "> desired</ span > < span class ="p "> ,</ span >
249+ < span class ="n "> < a href ="../memory_order.html "> memory_order</ a > </ span > < span class ="n "> order</ span > < span class ="o "> =</ span > < span class ="n "> < a href ="../memory_order.html "> memory_order_seq_cst</ a > </ span >
250+ < span class ="p "> )</ span > < span class ="k "> const</ span > < span class ="k "> noexcept</ span > < span class ="p "> ;</ span > < span class ="c1 "> // (2) C++26</ span >
238251</ code > </ pre > </ div >
239252</ p >
240253< h2 > 概要</ h2 >
@@ -243,7 +256,11 @@ <h2>概要</h2>
243256< li > (1) : 現在の値と< code > expected</ code > が等値である場合に、< code > success</ code > メモリオーダーで現在の値を< code > desired</ code > で置き換え、そうでなければ< code > failure</ code > メモリオーダーで< code > expected</ code > を現在の値で置き換える</ li >
244257< li > (2) : 現在の値と< code > expected</ code > が等値である場合に、現在の値を< code > desired</ code > で置き換え、そうでなければ< code > expected</ code > を現在の値で置き換える。どちらの値置き換えの場合でも< code > order</ code > メモリオーダーが使用される</ li >
245258</ ul >
246- < h2 > 要件</ h2 >
259+ < h2 > < a class ="cpprefjp-defined-word " data-desc ="関数であればオーバーロード解決に参加するための条件、それ以外であれば受け付ける型の条件 "> テンプレートパラメータ制約</ a > </ h2 >
260+ < ul >
261+ < li > C++26 : < code > < a href ="../../type_traits/is_const.html "> is_const_v</ a > <T></ code > が< code > false</ code > であること</ li >
262+ </ ul >
263+ < h2 > 事前条件</ h2 >
247264< ul >
248265< li > < code > failure</ code > が< code > < a href ="../memory_order.html "> memory_order_release</ a > </ code > , < code > < a href ="../memory_order.html "> memory_order_acq_rel</ a > </ code > ではないこと</ li >
249266</ ul >
@@ -350,6 +367,13 @@ <h3>処理系</h3>
350367< li > < a href ="../../../implementation.html#clang "> Clang</ a > : 9.0 < span aria-label ="未実装 " role ="img " title ="未実装 "> ❌</ span > </ li >
351368< li > < a href ="../../../implementation.html#gcc "> GCC</ a > : 10.1 < span aria-label ="検証済 " role ="img " title ="検証済 "> ✅</ span > </ li >
352369< li > < a href ="../../../implementation.html#visual_cpp "> Visual C++</ a > : ??</ li >
370+ </ ul >
371+ < h2 > 参照</ h2 >
372+ < ul >
373+ < li > < a href ="https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3323r1.html " target ="_blank "> P3323R1 cv-qualified types in < code > atomic</ code > and < code > atomic_ref</ code > </ a > < ul >
374+ < li > C++26で< a class ="cpprefjp-defined-word " data-desc ="型をconstおよび・もしくはvolatileで修飾すること "> CV修飾</ a > されたテンプレート引数を受け取れるようになった</ li >
375+ </ ul >
376+ </ li >
353377</ ul > </ div >
354378
355379 </ div >
0 commit comments