https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116619

            Bug ID: 116619
           Summary: Invalid null pointer constant accepted in the
                    initializer of a pointer
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: luigighiron at gmail dot com
  Target Milestone: ---

The following code is incorrectly accepted by GCC:

int main(){
    void*p=int(0);
}

This code is invalid because int(0) is not a null pointer constant. Clang and
MSVC (with /permissive-) reject this program for this reason. Also, GCC rejects
this as a null pointer constant in some other contexts, for example:

#include<iostream>
void foo(void*){
    std::cout<<"1\n";
}
void foo(...){
    std::cout<<"2\n";
}
int main(){
    foo(0);
    foo(int(0));
}

GCC prints "1 2" here (correctly) since int(0) isn't treated as a null pointer
constant. Though not all other contexts handle this correctly, for example
static_cast<void*>(int(0)) is also incorrect accepted.
  • [Bug c++/116619] New: Invalid nu... luigighiron at gmail dot com via Gcc-bugs

Reply via email to