https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118463
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I think the question comes down to is this invalid even without instantiating f<B>. ``` struct B{ int y; }; template<typename T> void f() { k<T>(); } ``` GCC rejects it even without instantiation while clang, MSVC, EDG all accept it until you actually instantiates `f<B>`.