7 Standard conversions [conv]

7.11 Pointer conversions [conv.ptr]

A null pointer constant - это integer literal нулевое значение или prvalue типа std​::​nullptr_­t. Константа нулевого указателя может быть преобразована в тип указателя; результат относится к null pointer value этому типу и отличается от любого другого значения указателя на объект или типа указателя на функцию. Такое преобразование называется файлом null pointer conversion. Два значения нулевого указателя одного и того же типа должны сравниваться как равные. Преобразование константы нулевого указателя в указатель на тип, квалифицированный cv, является одним преобразованием, а не последовательностью преобразования указателя, за которым следует qualification conversion. Константа нулевого указателя целочисленного типа может быть преобразована в значение типа pr std​::​nullptr_­t. [ Note: Результирующее значение prvalue не является значением нулевого указателя. ] end note

Prvalue типа «указатель на cv T», где T является типом объекта, может быть преобразовано в prvalue типа «указатель на cv void». При pointer value этом преобразовании не изменяется.

Prvalue типа «указатель на cv D», где D является типом класса, может быть преобразовано в prvalue типа «указатель на cv B», где B - base class из D. Если B - inaccessible или ambiguous базовый класс D, программа, которая требует этого преобразования, плохо сформирована. Результатом преобразования является указатель на подобъект базового класса объекта производного класса. Значение нулевого указателя преобразуется в значение нулевого указателя целевого типа.