A null pointer constant can be
converted to a pointer type; the
result is the null pointer value of that type and is
distinguishable from every other value of
object pointer or function pointer
type.
Two null pointer values of the same type shall compare
equal.
The conversion of a null pointer constant to a pointer to
cv-qualified type is a single conversion, and not the sequence of a
pointer conversion followed by a qualification
conversion ([conv.qual]).
A null pointer constant of integral type
can be converted to a prvalue of type std::nullptr_t.
A prvalue of type “pointer to cvD”, where D
is a class type, can be converted to a prvalue of type “pointer to
cvB”, where B is a base class
(Clause [class.derived]) of D.
If B is an
inaccessible (Clause [class.access]) or
ambiguous ([class.member.lookup]) base class of D, a program
that necessitates this conversion is ill-formed.
The result of the
conversion is a pointer to the base class subobject of the derived class
object.
The null pointer value is converted to the null pointer value of
the destination type.