https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52145
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Blocks|88655 |94404
Alias| |cwg903
--- Comment #11 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Here is a testcase which tests all of the null pointerness in C++11 (+):
#include <cstddef>
extern "C" int puts(const char*);
typedef unsigned long uint64_t;
typedef long int64_t;
struct Foo { Foo(int64_t) { } };
bool t = true;
void foo(const char*)
{
if (t)
__builtin_abort();
puts("In foo(const char*)");
}
void foo(const Foo&)
{
if (!t)
__builtin_abort();
puts("In foo(const Foo&)");
}
int main()
{
#if __cplusplus >= 201103L
t= true;
#else
t= false;
#endif
foo((int)0);
foo((unsigned)0);
foo((short)0);
foo((unsigned short)0);
foo((int64_t)0);
foo((uint64_t)0);
foo(int());
#if __cplusplus >= 201103L
foo(int{});
t= false;
foo(nullptr);
#endif
foo(0u);
foo(0ul);
foo(0ull);
foo(0);
foo(NULL);
}
---- CUT ----
We get this right for C++98 but wrong for C++11.
Referenced Bugs:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88655
[Bug 88655] Different overloaded function being called depending on which
compiler is used
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94404
[Bug 94404] [meta-bug] C++ core issues