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

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Using C++98 (on a LP64 target) and:
typedef unsigned long uint64_t;
typedef long int64_t;

struct Foo { Foo(int64_t) { } };

void foo(const char*)
{
  std::puts("In foo(const char*)");
}

void foo(const Foo&)
{
  std::puts("In foo(const Foo&)");
}

int main()
{
  foo((int)0);
  foo((unsigned)0);
  foo((short)0);
  foo((unsigned short)0);
  foo((int64_t)0);
  foo((uint64_t)0);
  foo(0);
  foo(NULL);
}
--- CUT ---
In foo(const char*)
In foo(const char*)
In foo(const char*)
In foo(const char*)
In foo(const char*)
In foo(const char*)
In foo(const char*)
In foo(const char*)

As you can see that is the "old" behavior.
With -std=c++11, I get:
In foo(const Foo&)
In foo(const char*)
In foo(const char*)
In foo(const char*)
In foo(const char*)
In foo(const char*)
In foo(const char*)
In foo(const char*)

Reply via email to