I learned that nullptr
, in addition to being convertible to any pointer type (but not to any integral type) also has its own type std::nullptr_t
. So it is possible to have a method overload that accepts std::nullptr_t
.
Exactly why is such an overload required?
If more than one overload accepts a pointer type, an overload for std::nullptr_t
is necessary to accept a nullptr
argument. Without the std::nullptr_t
overload, it would be ambiguous which pointer overload should be selected when passed nullptr
.
Example:
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
}