https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108390
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- MSVC considers this ambigous just like older versions of GCC: <source>(3): error C2668: 'f': ambiguous call to overloaded function <source>(2): note: could be 'int f<int,2>(int (*)[2],T (*)[2])' with [ T=int ] <source>(1): note: or 'long f<int,2>(int (*)[2],T (*)[2])' with [ T=int ] <source>(3): note: while trying to match the argument list '(int, int)'