Пространства имён
Варианты
Действия

nullptr_t

Материал из cppreference.com
< c | types
<tbody> </tbody>
Определено в заголовочном файле <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. Если программа производит значение типа 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


См. также

константа нулевого указателя, определяемая реализацией
(макроконстанта) [править]