nullptr_t
|
Definido en el encabezado
<stddef.h>
|
||
|
typedef
typeof
(
nullptr
)
nullptr_t
;
|
(desde C23) | |
nullptr_t
es el tipo de la constante predefinida de puntero nulo,
nullptr
. Es un tipo distinto que no es en sí mismo un tipo puntero. Puede ser
convertido implícitamente
a cualquier tipo puntero o
bool
, y el resultado es el valor de puntero nulo de ese tipo o
false
respectivamente. Ningún tipo excepto
nullptr_t
mismo puede ser convertido o convertido explícitamente a
nullptr_t
.
sizeof ( nullptr_t ) y alignof ( nullptr_t ) son iguales a sizeof ( void * ) y alignof ( void * ) respectivamente.
nullptr_t
tiene solo un valor válido, es decir,
nullptr
. La representación del objeto de
nullptr
es la misma que la de
(
void
*
)
0
. Si una
conversión de lvalue
produce un valor
nullptr_t
con una representación de objeto diferente, el comportamiento es indefinido.
Ejemplo
Demostrar que
nullptr_t
es un tipo distinto.
#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); }
Salida:
void* other nullptr_t
Referencias
- Estándar C23 (ISO/IEC 9899:2024):
-
- 7.21.2 El tipo nullptr_t (p: 315-316)
Véase también
|
constante de puntero nulo definida por la implementación
(macro constante) |
|
|
Documentación de C++
para
nullptr_t
|
|