On Sun, May 29, 2022 at 4:39 PM Andrey Semashev via Boost < boost@lists.boost.org> wrote:
On 5/30/22 02:22, Gavin Lambert via Boost wrote:
On 27/05/2022 23:00, Andrey Semashev wrote:
It *is* a useless warning. The code with NULL is explicit enough and portable, so what is this warning about? That the code is not C++11-only? I know that, and it's not up to the compiler to tell me
that.
The problem is that NULL is defined as a plain 0...
This is an implementation detail. It could be __builtin_null(), which would behave equivalent to 0 or (void*)0 but would not emit warnings.
In C++ it is not allowed for NULL to be of type void* (it is allowed in C). It could be some __null thing, but it has to behave the same as 0, except maybe generate appropriate warnings. I've seen NULL defined as 0 or 0L, which means overload resolution and thus portability is affected. Best to avoid it in C++.