Skip to content

Latest commit

 

History

History
52 lines (40 loc) · 2.33 KB

pointer_safety.md

File metadata and controls

52 lines (40 loc) · 2.33 KB

pointer_safety

  • memory[meta header]
  • std[meta namespace]
  • enum[meta id-type]
  • cpp11[meta cpp]
  • cpp23removed[meta cpp]
namespace std {
  enum class pointer_safety {
    relaxed,
    preferred,
    strict
  };
}

この列挙型はC++23で削除された。

概要

pointer_safetyは、ポインタ安全性について、その挙動/規則について確認するための列挙型である。

Safety-Derived なポインタ

"Safety-Derived なポインタ" とは、とても簡単に言うと, ::operator new で確保されたオブジェクトを指しているポインタのことである。これは、トリッキーな実装により得られたポインタと区別するために用いられる。ガベージコレクション ABI では、Safety-Derived なポインタであるかどうかを基準として動作する。

列挙値

各列挙値の説明を以下に示す.

列挙値 説明 対応バージョン
relaxed Safety-Derived なポインタもそうでないポインタも同様に扱われる。 (C++03 までと同じ) C++11
preferred relaxedと同様。ただしリークに関するレポート(ヒント)を実装することを許可する。 C++11
strict この環境では厳密な実装が行われており、Safety-Derived と 非Safety-Derived は区別される。 C++11

バージョン

言語

  • C++11

環境

参照