https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97171
--- Comment #2 from Nathan Sidwell <nathan at gcc dot gnu.org> --- reduced testcase: template <typename _UnaryOperation> void transform(_UnaryOperation); template <typename T> void Apply () { extern T Maker (void); // block-scope extern with dependent type transform (Maker); } template void Apply<int> (); That;s a weird local extern!