nullptr_t
From cppreference.com
| ヘッダー <stddef.h> で定義 |
||
| typedef typeof(nullptr) nullptr_t; |
(C23以降) | |
nullptr_t は、組み込みのヌルポインタ定数である nullptr の型です。これは、それ自体がポインタ型ではない、独立した型です。この型は、任意のポインタ型または bool に 暗黙的に変換 できます。その結果は、それぞれその型のヌルポインタ値、または false になります。nullptr_t 自身以外の型は、nullptr_t に変換したり、明示的にキャストしたりすることはできません。
sizeof(nullptr_t) および alignof(nullptr_t) は、それぞれ sizeof(void*) および alignof(void*) と等しくなります。
nullptr_t は、有効な値として nullptr のみを持ちます。nullptr のオブジェクト表現は、 (void*)0 のオブジェクト表現と同じです。lvalue 変換によって異なるオブジェクト表現を持つ nullptr_t 値が生成された場合、動作は未定義です。
[編集] 例
nullptr_t が独立した型であることを示します。
このコードを実行
#include <stddef.h> #include <stdio.h> #define DETECT_NULL_POINTER_CONSTANT(e) \ _Generic(e, \ void* : puts("void*"), \ nullptr_t : puts("nullptr_t"), \ default : puts("other") \ ) int main() { DETECT_NULL_POINTER_CONSTANT(((void*)0)); DETECT_NULL_POINTER_CONSTANT(0); DETECT_NULL_POINTER_CONSTANT(nullptr); }
出力
void* other nullptr_t
[編集] 参考文献
- C23標準 (ISO/IEC 9899:2024)
- 7.21.2 The nullptr_t type (p: 315-316)
[編集] 関連項目
| 処理系定義のヌルポインタ定数 (macro constant) | |
| C++ ドキュメント nullptr_t
| |