Spec-Zone.ru › C

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)

См. также

NULL
константа нулевого указателя, определяемая реализацией
(макроконстанта)
Документация по C++ для nullptr_t

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/types/nullptr_t

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API