Skip to content

Commit a24d776

Browse files
committed
atomic/atomic_flag: LWG3659対応
https://cplusplus.github.io/LWG/issue3659 ATOMIC_FLAG_INIT非推奨化を取消
1 parent 24dc108 commit a24d776

File tree

4 files changed

+8
-11
lines changed

4 files changed

+8
-11
lines changed

lang/cpp20.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,6 @@ C++20とは、2020年中に改訂され、ISO/IEC 14882:2020で標準規格化
324324
- [`std::atomic`](/reference/atomic/atomic.md)クラスと[`std::atomic_flag`](/reference/atomic/atomic_flag.md)クラスのデフォルトコンストラクタが値初期化するようになったため、不要になった以下のアトミックオブジェクトの初期化機能を非推奨化:
325325
- [`std::atomic_init()`](/reference/atomic/atomic_init.md)関数
326326
- [`ATOMIC_VAR_INIT`](/reference/atomic/atomic_var_init.md)マクロ
327-
- [`ATOMIC_FLAG_INIT`](/reference/atomic/atomic_flag_init.md)マクロ
328327
- [`std::shared_ptr`](/reference/memory/shared_ptr.md)[`std::atomic`特殊化](/reference/memory/atomic.md)追加にともない、[`std::shared_ptr`](/reference/memory/shared_ptr.md)に対する以下のアトミック操作を非推奨化:
329328
- [`std::atomic_is_lock_free`](/reference/memory/shared_ptr/atomic_is_lock_free.md)
330329
- [`std::atomic_load`](/reference/memory/shared_ptr/atomic_load.md)

reference/atomic.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@
113113
| [`atomic_flag_wait_explicit`](atomic/atomic_flag_wait_explicit.md) | メモリオーダーを指定して起床されるまで待機する (function) | C++20 |
114114
| [`atomic_flag_notify_one`](atomic/atomic_flag_notify_one.md) | 待機しているスレッドをひとつ起床させる (function) | C++20 |
115115
| [`atomic_flag_notify_all`](atomic/atomic_flag_notify_all.md) | 待機している全てのスレッドを起床させる (function) | C++20 |
116-
| [`ATOMIC_FLAG_INIT`](atomic/atomic_flag_init.md) | フラグ変数の初期化(define) | C++11<br/>C++20から非推奨 |
116+
| [`ATOMIC_FLAG_INIT`](atomic/atomic_flag_init.md) | フラグ変数の初期化(define) | C++11 |
117117

118118

119119
## フェンス

reference/atomic/atomic_flag/op_constructor.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ atomic_flag(const atomic_flag&) = delete; // (2) C++11
1313
atomic_flag(atomic_flag&&) = delete; // (3) C++11
1414

1515
atomic_flag(FOR_ATOMIC_FLAG_INIT); // (4) C++11
16-
// (4) C++20で非推奨
1716
```
17+
* FOR_ATOMIC_FLAG_INIT[italic]
1818
1919
## 概要
2020
- (1) : デフォルトコンストラクタ
2121
- (2) : コピーコンストラクタ。コピー禁止
2222
- (3) : ムーブコンストラクタ。ムーブ禁止
23-
- (4) : `ATOMIC_FLAG_INIT`マクロのための特別なコンストラクタ。フラグをクリアする。`atomic_flag`クラスのデフォルトコンストラクタはデフォルト定義されるため、デフォルト構築では未初期化状態となる
23+
- (4) : [`ATOMIC_FLAG_INIT`](../atomic_flag_init.md)マクロでコピー初期化を行うための特別なコンストラクタ。フラグをクリアする。
2424
2525
2626
## 効果
@@ -29,7 +29,7 @@ atomic_flag(FOR_ATOMIC_FLAG_INIT); // (4) C++11
2929
- C++14 : フラグを未規定の状態にする
3030
- C++20 : フラグをクリア状態にする
3131
- (4) :
32-
- `ATOMIC_FLAG_INIT`マクロを使用することで、フラグがクリアされた状態となる
32+
- コピー初期化形式で[`ATOMIC_FLAG_INIT`](../atomic_flag_init.md)マクロを使用することで、フラグがクリアされた状態となる
3333
- C++11 : このマクロを、静的な有効期間を持つ`atomic_flag`オブジェクトに使用した場合、その初期化は静的に行われる
3434
- C++14 : このマクロを、完全に静的な有効期間を持つ`atomic_flag`オブジェクトに使用した場合、その初期化は静的に行われる
3535
@@ -65,3 +65,4 @@ int main()
6565
## 参照
6666
- [LWG Issue 2159. `atomic_flag` initialization](http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2159)
6767
- [P0883R2 Fixing Atomic Initialization, Rev2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0883r2.pdf)
68+
- [LWG Issue 3659. Consider `ATOMIC_FLAG_INIT` undeprecation](http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#3659)

reference/atomic/atomic_flag_init.md

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,18 @@
22
* atomic[meta header]
33
* macro[meta id-type]
44
* cpp11[meta cpp]
5-
* cpp20deprecated[meta cpp]
65

76
```cpp
87
#define ATOMIC_FLAG_INIT see below
98
```
109
11-
この機能はC++20で非推奨となった。[`std::atomic_flag`](atomic_flag.md)クラスのデフォルトコンストラクタが値初期化するようになったため、初期化のためにこの機能を使用する必要はない。
12-
13-
1410
## 概要
15-
フラグを初期化する
11+
フラグをクリア状態に初期化する
1612
1713
このマクロは、[`atomic_flag`](atomic_flag.md)オブジェクトの初期化に使用し、フラグをクリア状態にする。静的オブジェクトに対しては、その初期化は静的に行われなければならない。
1814
1915
20-
## 非推奨の詳細 (C++20)
16+
## 備考
2117
C言語との互換性のために、`std::atomic_flag`クラスのデフォルトコンストラクタはトリビアルに定義され、初期値は未規定となっていた。そのためこの機能を介して`std::atomic_flag`オブジェクトを初期化する必要があったが、C++20からデフォルトコンストラクタが値初期化を行うようになったため、初期化のためにこの機能を使用する必要はなくなった。
2218
2319
@@ -59,3 +55,4 @@ false
5955
6056
## 参照
6157
- [P0883R2 Fixing Atomic Initialization, Rev2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0883r2.pdf)
58+
- [LWG Issue 3659. Consider `ATOMIC_FLAG_INIT` undeprecation](http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#3659)

0 commit comments

Comments
 (0)