Namespaces
Variants

std::nullptr_t

De es.cppreference.net
 
 
Biblioteca de utilidades
Soporte del lenguaje
Soporte de tipos (tipos básicos, RTTI)
Macros de prueba de características de la biblioteca (C++20)
Utilidades de programa
Funciones variádicas
Soporte de corrutinas (C++20)
Soporte de contratos (C++26)
Comparación de tres vías
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilidades generales
Operadores relacionales (obsoleto en C++20)
 
Soporte de tipos
Tipos básicos
Tipos enteros de ancho fijo (C++11)
Tipos de punto flotante de ancho fijo (C++23)
(C++11)    
(C++17)
Límites numéricos
Interfaz de límites numéricos de C
Información de tipo en tiempo de ejecución
 
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 o un tipo puntero a miembro. Los prvalores de este tipo son constantes de puntero nulo, y pueden ser convertidos implícitamente a cualquier tipo puntero y tipo 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