- 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 なポインタ" とは、とても簡単に言うと, ::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
- Clang: ?
- GCC: ?
- ICC: ?
- Visual C++: 2010 [mark verified], 2012 [mark verified], 2013 [mark verified]