2013-03-03 3 views

ответ

5

Я должен был бы ответить на это, если нет. Из § 2.14.7/1 (акцент мой):

Литеральный указатель - это ключевое слово nullptr. Это prvalue типа std :: nullptr_t. [Примечание: std :: nullptr_t - это отдельный тип, который равен ни тип указателя, ни указатель на тип члена; скорее, prvalue этого типа является константой нулевого указателя и может быть преобразовано в значение нулевого указателя или значение указателя нулевого элемента.

T * должен быть std::nullptr_t и так std::nullptr_t является не тип указателя, который не представляется возможным. Попытка позвонить ему с nullptr на GCC 4.7.2 дает ошибку, указывающую на то, что она пыталась позвонить f(std::nullptr_t), но имела только f(const T *), что согласуется с тем, что std::nullptr_t не является T *.

Смежные вопросы