https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110774
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Take: ``` template<typename T> struct A { typedef char* type; }; template<typename T> char* f1(T, char*); // #1 template<typename T> long* f1(T*, typename A<T>::type*); // #2 char *t; char **t1; long* p0; long *p1 = f1(p0, t1); // choses #2 char* p2 = f1(p0, t); // choses #1 ``` GCC, MSVC, and clang all compile the above. So is it only an issue with nullptr where it could chose either?