nullptr_t
|
Определено в заголовочном файле
<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 Тип nullptr_t (стр: 315-316)
Смотрите также
|
определяемая реализацией константа нулевого указателя
(макрос-константа) |
|
|
C++ documentation
для
nullptr_t
|
|