Skip to content

Commit

Permalink
C++26 未初期化変数の読み取りをエラー性動作とする : 入れ子リストの表示崩れを修正 #1362
Browse files Browse the repository at this point in the history
  • Loading branch information
faithandbrave committed Nov 17, 2024
1 parent 5151c6a commit 4122657
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions lang/cpp26/erroneous_behavior_for_uninitialized_reads.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@ int main() {

## 仕様
- 自動記憶域期間をもつオブジェクトの記憶域は確保時点で「エラー性の値 (erroneous value)」をもつとされ、処理系がプログラムの状態に依存せず決定する何らかの値で埋められる
- 動的記憶域期間であれば不定値、静的・スレッド記憶域期間であればゼロで埋められる。C++23までは自動記憶域期間も不定値で埋められていた
- 動的記憶域期間であれば不定値、静的・スレッド記憶域期間であればゼロで埋められる。C++23までは自動記憶域期間も不定値で埋められていた
- 初期化されなかったスカラ型オブジェクトなど、値表現(パディングは含まない)内のいずれかのビットにエラー性の値をもつオブジェクトはエラー性の値をもつとされる
- 式が評価された結果としてエラー性の値が生成された場合、エラー性動作を引き起こす
- ただし、`unsigned char`(およびunsignedとなる場合は`char`)もしくは[`std::byte`](/reference/cstddef/byte.md)型のエラー性の値がこれらの型のオブジェクトの初期化・代入に使用される場合や値が破棄される場合はエラー性動作にならない
- これらのルールは、式が評価された結果として不定値が生成された場合に未定義の動作を引き起こすとする従来のルールと同様である
- ただし、`unsigned char`(およびunsignedとなる場合は`char`)もしくは[`std::byte`](/reference/cstddef/byte.md)型のエラー性の値がこれらの型のオブジェクトの初期化・代入に使用される場合や値が破棄される場合はエラー性動作にならない
- これらのルールは、式が評価された結果として不定値が生成された場合に未定義の動作を引き起こすとする従来のルールと同様である
- エラー性動作を引き起こしたうえで生成された値は、後続の処理ではエラー性の値とはみなされない

```cpp example
Expand Down

0 comments on commit 4122657

Please sign in to comment.