https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98822
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- > MSVC accepts the final example above Looks like that has changed in a recent build. MSVC now errors out with: <source>(4): error C2084: function 'void S<1>::f(int)' already has a body <source>(4): note: see previous definition of 'f' <source>(9): note: see reference to class template instantiation 'S<2>' being compiled