注目★★★★★Hacker News
C++26、標準ライブラリの危険操作を検出・停止へ
30秒で把握
- 1C++26 が標準ライブラリの事前条件違反を検出・停止
- 2GCC・Clang・MSVC が異なる hardening 設定を提供
- 3std::vector 以外の空コンテナや optional 参照も対象
要約
C++26 は Standard Library hardening を導入し、選択した事前条件違反を未定義動作のまま進めず、検出して停止させる。std::vector::operator[] の範囲外アクセスや、空コンテナの front()/back()、未使用状態の std::optional 参照などが対象になる。GCC/libstdc++ は _GLIBCXX_ASSERTIONS と -fhardened、Clang/libc++ は NONE・FAST・EXTENSIVE・DEBUG、MSVC STL は _MSVC_STL_HARDENING で有効化する。実装と設定方法はベンダーごとに異なり、C++26 対応は進行中である。hardening は C++ 全体をメモリ安全にせず、sanitizer や静的解析の代替にもならない。
あなたへの影響
C++26 を使う開発チームは、最適化ビルドを含む各ツールチェーンで hardening 設定と停止時の挙動を次の検証サイクルで確認すべきです。
推奨:hardening は標準ライブラリの事前条件違反を検出する仕組みで、sanitizer・静的解析・入力検証と併用してください。