Spec-Zone.ru › C++

std::nullptr_t

Определено в заголовке <cstddef>
using nullptr_t = decltype(nullptr);
(с C++11)

Тип литерала нулевого указателя, nullptr. Это отдельный тип, который сам по себе не является типом указателя или типом указателя на член. Его значения являются константами нулевых указателей (см. NULL), и они могут быть явным образом преобразованы в любой тип указателя и указателя на член.

sizeof(std::nullptr_t) равно sizeof(void *).

Примечания

Стандарт C++ требует, чтобы <stddef.h> разместил содержимое <cstddef> в глобальном пространстве имен и тем самым требует, чтобы nullptr_t был доступен в глобальном пространстве имен при включении <stddef.h>.

nullptr_t не является частью C до C23.

Пример

Если две или более перегрузки принимают разные типы указателей, необходима перегрузка для std::nullptr_t для принятия аргумента нулевого указателя.

#include <cstddef>
#include <iostream>
 
void f(int*)
{
   std::cout << "Pointer to integer overload\n";
}
 
void f(double*)
{
   std::cout << "Pointer to double overload\n";
}
 
void f(std::nullptr_t)
{
   std::cout << "null pointer overload\n";
}
 
int main()
{
    int* pi{};
    double* pd{};
 
    f(pi);
    f(pd);
    f(nullptr); // would be ambiguous without void f(nullptr_t)
    // f(0);    // ambiguous call: all three functions are candidates
    // f(NULL); // ambiguous if NULL is an integral null pointer constant 
                // (as is the case in most implementations)
}

Вывод:

Pointer to integer overload
Pointer to double overload
null pointer overload

См. также

nullptr(C++11) литерал указателя, который задаёт значение нулевого указателя
NULL
определённое реализацией значение нулевого указателя
(макроконстанта)
is_null_pointer
(C++14)
проверяет, является ли тип std::nullptr_t
(шаблон класса)
Документация C для nullptr_t

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

Spec-Zone.ru

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