https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70667
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- So if we have (note the extra f which has no arguments): ``` template <int N> struct A { alignas (N) int a; }; template <int N> struct B { char c; }; template <int N> int f (int (*)[sizeof (A<N>)]) { return 0; } template <int N> int f (int (*)[sizeof (B<N>)]) { return 1; } template <int N> int f () { return 2; } int i = f<3>(); ``` This started to get accepted in GCC 12.