Namespaces
Variants

std:: nullptr_t

From cppreference.net
Utilities library
Definido en el encabezado <cstddef>
using nullptr_t = decltype ( nullptr ) ;
(desde C++11)

std::nullptr_t es el tipo del literal de puntero nulo nullptr . Es un tipo distinto que no es en sí mismo un tipo puntero ni un tipo puntero a miembro. Los prvalues de este tipo son constantes de puntero nulo , y pueden ser convertidos implícitamente a cualquier tipo puntero y puntero a miembro.

sizeof ( std :: nullptr_t ) es igual a sizeof ( void * ) .

Notas

El estándar de C++ requiere que <stddef.h> coloque los contenidos de <cstddef> en el espacio de nombres global, y por lo tanto requiere que nullptr_t esté disponible en el espacio de nombres global cuando <stddef.h> es incluido.

nullptr_t no es parte de C hasta C23.

No está especificado si la declaración de std::nullptr_t está disponible en cualquier otro encabezado de la biblioteca estándar. Una implementación puede evitar introducir este nombre incluso cuando el estándar requiere que se utilice std::nullptr_t , por ejemplo, escribiendo decltype ( nullptr ) en su lugar.

Ejemplo

Si dos o más sobrecargas aceptan diferentes tipos de puntero, es necesaria una sobrecarga para std::nullptr_t para aceptar un argumento de puntero nulo.

#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)
}

Salida:

Pointer to integer overload
Pointer to double overload
null pointer overload

Véase también

nullptr (C++11) el literal de puntero que especifica un valor de puntero nulo
constante de puntero nulo definida por la implementación
(macro constante)
(C++11) ( DR* )
verifica si un tipo es std::nullptr_t
(plantilla de clase)
Documentación de C para nullptr_t