The wording in the standard has changed as a result of DR 903 . New wording
The null pointer constant is an integer literal (2.14.2) with a value of 0 or a value of the class std::nullptr_t .
Problem 903 is related to a curious angular case where it is not possible to create the “correct” overload resolution in some cases where the template parameter is (possibly 0) an integer constant.
Apparently several possible permissions have been considered, but
There is a strong consensus between the CWG that only the literal 0 should be considered a null pointer constant, and not any arbitrary null constant expression that is currently defined.
So, yes, it depends on whether the compiler complied with DR 903 or not.
source share