------- Comment #10 from bangerth at gmail dot com 2009-04-29 12:51 ------- There is really nothing much that can be done within the current C++ standard. In C, NULL is defined as (void*)0 which can be converted to any other pointer and so is clearly marked as a pointer. The compiler can then warn when passing it to an integer argument of a function.
In C++, we have [18.1/4] "The macro NULL is an implementation-defined C++ null pointer constant in this International Standard (_conv.ptr_).180)" and footnote 180 specifically says: 180) Possible definitions include 0 and 0L, but not (void*)0. This is because void* is not implicitly convertible to any other pointer type and so NULL could not be assigned to other pointers. As a consequence, since NULL can not in an obvious way be a pointer, there is no obvious warning that can be generated. The situation will be different with the upcoming C++1x standard where there is null_ptr. W. -- bangerth at gmail dot com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bangerth at gmail dot com Status|UNCONFIRMED |RESOLVED Resolution| |WONTFIX http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35669