https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83730
Wilhelm M <klaus.doldinger64 at googlemail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|wrong-code | --- Comment #4 from Wilhelm M <klaus.doldinger64 at googlemail dot com> --- If you change the example as below, you still get guards. struct A { A() = default; void foo() {} }; template<typename T> struct B { static void foo() { mTop.foo(); } static T mTop; }; template<typename T> T B<T>::mTop; // change int main() { B<A>::foo(); }