nullptr_t
Defined in header
<stddef.h>
|
||
typedef
typeof
(
nullptr
)
nullptr_t
;
|
(since C23) | |
nullptr_t
is the type of the predefined null pointer constant,
nullptr
. It is a distinct type that is not itself a pointer type. It can be
implicitly converted
to any pointer type or
bool
, and the result is the null pointer value of that type or
false
respectively. No type other than
nullptr_t
itself can be converted or explicitly cast to
nullptr_t
.
sizeof ( nullptr_t ) and alignof ( nullptr_t ) are equal to sizeof ( void * ) and alignof ( void * ) respectively.
nullptr_t
has only one valid value, i.e.,
nullptr
. The object representation of
nullptr
is same as that of
(
void
*
)
0
. If an
lvalue conversion
produces a
nullptr_t
value with a different object representation, the behavior is undefined.
Example
Demonstrate that
nullptr_t
is a distinct type.
#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); }
Output:
void* other nullptr_t
References
- C23 standard (ISO/IEC 9899:2024):
-
- 7.21.2 The nullptr_t type (p: 315-316)
See also
implementation-defined null pointer constant
(macro constant) |
|
C++ documentation
for
nullptr_t
|