Literal de puntero nullptr
De cppreference.com
Sintaxis
nullptr
|
(desde C++11) | ||||||||
Explicación
La palabra clave nullptr denota el literal de puntero. Es un prvalue de tipo std::nullptr_t. Existen conversiones implícitas de nullptr al valor de puntero nulo de cualquier tipo puntero y cualquier tipo puntero a miembro. Existen conversiones similares para cualquier constante de puntero nulo, que incluye valores de tipo std::nullptr_t así como la macro NULL.
Ejemplo
Demuestra que nullptr retiene el significado de puntero nulo incluso si ya no es un literal.
Ejecuta este código
#include <cstddef>
#include <iostream>
template<class T>
constexpr T clone(const T& t)
{
return t;
}
void g(int* i)
{
std::cout << "Se ha llamado a la función g\n";
}
int main()
{
g(nullptr); // de acuerdo
g(NULL); // de acuerdo
g(0); // de acuerdo
g(clone(nullptr); // de acuerdo
// g(clone(NULL); // ERROR: cero no-literal no puede ser una constante de puntero nulo
// g(clone(NULL); // ERROR: cero no-literal no puede ser una constante de puntero nulo
}
Salida:
Se ha llamado a la función g
Se ha llamado a la función g
Se ha llamado a la función g
Se ha llamado a la función g
Palabras clave
Referencias
- El estándar C++23 (ISO/IEC 14882:2023):
- 7.3.12 Pointer conversions [conv.ptr]
- El estándar C++20 (ISO/IEC 14882:2020):
- 7.3.12 Pointer conversions [conv.ptr]
- El estándar C++17 (ISO/IEC 14882:2017):
- 7.11 Pointer conversions [conv.ptr]
- El estándar C++14 (ISO/IEC 14882:2014):
- 4.10 Pointer conversions [conv.ptr]
- El estándar C++11 (ISO/IEC 14882:2011):
- 4.10 Pointer conversions [conv.ptr]
Véase también
| Constante de puntero nulo definido por la implementación. (constante de macro) | |
(C++11) |
El tipo del literal nullptr. (typedef) |