Skip to content

Commit 9755c4c

Browse files
authored
未初期化領域への暗黙的なオブジェクト構築 : 表現修正
1 parent cf2f9ac commit 9755c4c

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

lang/cpp20/implicit_creation_of_objects_for_low-level_object_manipulation.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,9 +209,9 @@ C++においては、ポインタに対する演算(`+ -`など)はそのポ
209209
210210
### 擬似デストラクタ呼び出しによる生存期間の終了
211211
212-
一部の文脈では、スカラー型のオブジェクトに対してデストラクタ呼び出しを行うことができ、その場合のデストラクタ呼び出しのことを擬似デストラクタ呼び出し(*pseudo-destructor call*)と呼ぶ。
212+
一部の文脈では、スカラ型のオブジェクトに対してデストラクタ呼び出しを行うことができ、その場合のデストラクタ呼び出しのことを擬似デストラクタ呼び出し(*pseudo-destructor call*)と呼ぶ。
213213
214-
C++17まで、擬似デストラクタ呼び出しには何の効果もなかった(テンプレートの文脈でクラス型との構文上の互換性を取るためのものでしかなかった)が、C++20からは擬似デストラクタ呼び出しはそのスカラー型オブジェクトの生存期間を終了させることが規定される
214+
C++17まで、擬似デストラクタ呼び出しには何の効果もなかった(テンプレートの文脈でクラス型との構文上の互換性を取るためのものでしかなかった)が、C++20からは擬似デストラクタ呼び出しはそのスカラ型オブジェクトの生存期間を終了させることが規定される
215215
216216
```cpp
217217
constexpr int f() {
@@ -235,7 +235,7 @@ static_assert(f() == 123); // C++20からはUBが起こるため不適格、C++
235235

236236
これらの変更はあくまでオブジェクト生存期間に関する規則を変更しただけに過ぎず、その影響はコンパイラ等の実装のオブジェクト生存期間の認識が変わるだけである。それによって、今まで未定義動作となっていたコードが未定義動作ではなくなり、未定義動作をトリガーとする最適化を受ける可能性が将来にわたって取り除かれることになる(ただし、擬似デストラクタ呼び出し周りの変更だけは、未定義動作ではなかったコードを未定義動作にしうる)。
237237

238-
したがって、擬似デストラクタ呼び出しを除いて、これらの変更によって最適化によるもの以外の実行時の振る舞いが変化することはなく、暗黙的なオブジェクト構築は実際にコンストラクタを呼んだり何か初期化を行うものではない
238+
したがって、これらの変更によって実行時に何かすべきことが増えるわけではなく、暗黙的なオブジェクト構築は実際にコンストラクタを呼んだり何か初期化を行うものではないし、擬似デストラクタ呼び出しが実行時に何かをするようになるわけでもない
239239

240240
##
241241
(執筆中)

0 commit comments

Comments
 (0)