200
200
201
201
< p class ="text-right "> < small >
202
202
最終更新日時(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秒
205
205
</ span >
206
206
< br />
207
207
< span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
225
225
< div class ="col-sm-12 content-body ">
226
226
227
227
< 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 >
238
251
</ code > </ pre > </ div >
239
252
</ p >
240
253
< h2 > 概要</ h2 >
@@ -243,7 +256,11 @@ <h2>概要</h2>
243
256
< li > (1) : 現在の値と< code > expected</ code > が等値である場合に、< code > success</ code > メモリオーダーで現在の値を< code > desired</ code > で置き換え、そうでなければ< code > failure</ code > メモリオーダーで< code > expected</ code > を現在の値で置き換える</ li >
244
257
< li > (2) : 現在の値と< code > expected</ code > が等値である場合に、現在の値を< code > desired</ code > で置き換え、そうでなければ< code > expected</ code > を現在の値で置き換える。どちらの値置き換えの場合でも< code > order</ code > メモリオーダーが使用される</ li >
245
258
</ 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 >
247
264
< ul >
248
265
< 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 >
249
266
</ ul >
@@ -350,6 +367,13 @@ <h3>処理系</h3>
350
367
< li > < a href ="../../../implementation.html#clang "> Clang</ a > : 9.0 < span aria-label ="未実装 " role ="img " title ="未実装 "> ❌</ span > </ li >
351
368
< li > < a href ="../../../implementation.html#gcc "> GCC</ a > : 10.1 < span aria-label ="検証済 " role ="img " title ="検証済 "> ✅</ span > </ li >
352
369
< 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 >
353
377
</ ul > </ div >
354
378
355
379
</ div >
0 commit comments