c++ - español - ¿Cuáles son los usos del tipo `std:: nullptr_t`?
que es null c++ (2)
Aprendí que nullptr , además de ser convertible a cualquier tipo de puntero (pero no a cualquier tipo integral) también tiene su propio tipo std::nullptr_t . Por lo tanto, es posible tener una sobrecarga de método que acepte std::nullptr_t .
¿Exactamente por qué se requiere tal sobrecarga?
Hay algunos casos especiales que la comparación con un tipo nullptr_t es útil para indicar si un objeto es válido.
Por ejemplo, el operator== y el operator!= Sobrecargas de std::function solo podrían tomar nullptr_t como parámetro para indicar si el objeto de función está vacío. Para más detalles puedes leer esta pregunta .
Si más de una sobrecarga acepta un tipo de puntero, es necesaria una sobrecarga para std::nullptr_t para aceptar un argumento nullptr . Sin la sobrecarga std::nullptr_t , sería ambiguo qué sobrecarga de punteros debería seleccionarse cuando se pasa nullptr .
Ejemplo:
void f(int *intp)
{
// Passed an int pointer
}
void f(char *charp)
{
// Passed a char pointer
}
void f(std::nullptr_t nullp)
{
// Passed a null pointer
}