std::nullptr_t
De cppreference.com
Definido en el archivo de encabezado <cstddef>
|
||
typedef decltype(nullptr) nullptr_t; |
(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 puntero o tipo miembro.
[editar] Ejemplo
Si dos o más sobrecargas aceptan distintos tipos de punteros, es necesaria una sobrecarga para std::nullptr_t para aceptar un argumento de puntero nulo.
Ejecuta este código
#include <cstddef> #include <iostream> void f(int* pi) { std::cout << "Puntero a sobrecarga de int\n"; } void f(double* pd) { std::cout << "Puntero a sobrecarga de double\n"; } void f(std::nullptr_t nullp) { std::cout << "Sobrecarga a puntero nulo\n"; } int main() { int* pi; double* pd; f(pi); f(pd); f(nullptr); // sería ambiguo sin void f(nullptr_t) // f(0); // llamada ambigua: las tres funciones son candidato // f(NULL); // ambigua si NULL es una constante entera de puntero nulo // (que es el caso en la mayoría de las implementaciones) }
Salida:
Puntero a sobrecarga de int Puntero a sobrecarga de double Sobrecarga a puntero nulo
[editar] Véase también
nullptr | El literal de puntero que especifica un valor de puntero nulo. (C++11) |
Constante de puntero nulo definido por la implementación. (constante de macro) | |
(C++14) |
Comprueba si un tipo es std::nullptr_t (plantilla de clase) |