https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86234
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- If I place "A<int> t;" before main(), then ICC, clang and MSVC all accept the code. That seems out a bit backwards for me but I don't know the C++ standard really. But it might point out why GCC is accepting the code.