Ответ 1
На практике это должно быть достаточно безопасно.
Но, технически, возможно, что значение вашей программы изменяется, не вызывая ошибок компилятора. Рассмотрим следующую программу:
void foo(int) { std::cout << "int\n"; }
void foo(int*) { std::cout << "int*\n"; }
int main() {
foo(NULL); // prints 'int'
foo(nullptr); // prints 'int*'
return 0;
}
Обратите внимание, что при наличии двусмысленности между int
и указателем при передаче NULL
версия указателя - это то, что почти всегда желательно - это означает, что большинство реальных программ не будут иметь такой двусмысленности, как в первую очередь (или будет использовать такие приемы, как (int*)NULL
, чтобы обойти его, и в этом случае замена на nullptr
прекрасна).