https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118101
--- Comment #2 from Nathaniel Shead <nshead at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #1) > Is valid? In that the specialization of A<T*> (imported via module B) after > the use in B. No, I've probably reduced it too far. But I can make it valid (I believe) by replacing the static member with a function, like template <typename T> struct B { A<T*> f(); }; since this way we haven't needed to instantiate the specialisation yet, and this still reproduces the ICE. I might try to find a more obviously correct reproduction at some point though.