https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84075
ensadc at mailnesia dot com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ensadc at mailnesia dot com --- Comment #4 from ensadc at mailnesia dot com --- Further reduced: template < int > struct b { }; template < typename n > struct g { typedef b< sizeof(n) > l; }; template < typename h, typename = typename g< h >::l > class aa {}; template < typename h, typename bz > void bj(aa< h, bz >, int); template < template < class > class ct > void bj(ct< class U >); void f() { bj(aa<int>(), 0); } ---- (`__attribute__((__used__))` in the original example matters because it ensures that the call is instantiated.)