2013-03-03 40 views

Odpowiedz

5

Będę musiał odpowiedzieć na to, ponieważ nie ma żadnego. Od § 2.14.7/1 (podkreślenie moje):

Literał literowy jest słowem kluczowym nullptr. Jest to prvalue typu std :: nullptr_t. [Uwaga: std :: nullptr_t jest odrębnym typem, który jest ani wskaźnikiem typu, ani wskaźnikiem do typu elementu; raczej prwartością tego typu jest stała wskaźnika pustego i może zostać przekonwertowana na wartość wskaźnika pustego lub wartość wskaźnika elementu zerowego.

T * musiałby być std::nullptr_t a od std::nullptr_t jest nie typu wskaźnik, który nie jest możliwe. Próba wywołania go pod numerem nullptr w GCC 4.7.2 powoduje błąd wskazujący, że próbował wywołać f(std::nullptr_t), ale miał tylko f(const T *), co jest zgodne z tym, że std::nullptr_t nie jest .