FDIS of the upcoming standard C++11, integral expression is still a null pointer
constant. NULL macro is still implementation defined but must be a null
pointer constant. So in practice it means it is good as 0 or can be
nullptr.
Your code that used either 0 or NULL will work just as before.
No, NULL is still the same as before. Too many people used the NULL macro in surprising ways, redefining it to nullptr would have broken a lot of code.
To elaborate: people have used NULL for example for many kinds of handle typedefs. If the real type behind such a typedef is not a pointer, defining NULL as nullptr would be a problem. Also, it seems some people have indeed used NULL to initialize numeric types.
At least that is what Microsoft found when they added the nullptr to MSVC10, and why they decided to keep NULL as it always was. Other compilers might choose a different path, but I don't think they would.
1/ The macro NULL, defined in any of <clocale>, <cstddef>, <cstdio>, <cstdlib>, <cstring>, <ctime>, or <cwchar>, is an implementation-defined C++ null pointer constant in this International Standard (18.2).
It is up to each implementation to provide its own definition, gcc if I recall correctly defines it to __nullptr for which it has special checks (verifies that it is not used in arithmetic contexts for example).
So it is possible to define it as nullptr, you will have to check your compiler/Standard Library documentation to see what has been done.
FDIS of the upcoming standard C++11, integral expression is still a null pointer constant. NULL macro is still implementation defined but must be a null pointer constant. So in practice it means it is good as 0 or can be nullptr.
Your code that used either 0 or NULL will work just as before.
Read the details here.
No, NULL is still the same as before. Too many people used the NULL macro in surprising ways, redefining it to nullptr would have broken a lot of code.
To elaborate: people have used NULL for example for many kinds of handle typedefs. If the real type behind such a typedef is not a pointer, defining NULL as nullptr would be a problem. Also, it seems some people have indeed used NULL to initialize numeric types.
At least that is what Microsoft found when they added the nullptr to MSVC10, and why they decided to keep NULL as it always was. Other compilers might choose a different path, but I don't think they would.
From the horse's mouth
It is up to each implementation to provide its own definition, gcc if I recall correctly defines it to
__nullptr
for which it has special checks (verifies that it is not used in arithmetic contexts for example).So it is possible to define it as
nullptr
, you will have to check your compiler/Standard Library documentation to see what has been done.