nullptr_t
|
ヘッダーで定義
<stddef.h>
|
||
|
typedef
typeof
(
nullptr
)
nullptr_t
;
|
(C23以降) | |
nullptr_t
は事前定義された null ポインタ定数
nullptr
の型です。これはポインタ型自体ではない独立した型です。これは任意のポインタ型または
bool
に
暗黙変換
可能であり、結果はそれぞれその型の null ポインタ値または
false
となります。
nullptr_t
自体以外の型は
nullptr_t
に変換または明示的にキャストすることはできません。
sizeof ( nullptr_t ) と alignof ( nullptr_t ) は、それぞれ sizeof ( void * ) と alignof ( void * ) に等しい。
nullptr_t
が取りうる有効な値は唯一つ、すなわち
nullptr
のみである。
nullptr
のオブジェクト表現は
(
void
*
)
0
のオブジェクト表現と同じである。
左辺値変換
によって異なるオブジェクト表現を持つ
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 nullptr_t型 (p: 315-316)
関連項目
|
実装定義のヌルポインタ定数
(マクロ定数) |
|
|
C++ documentation
for
nullptr_t
|
|