// { dg-additional-options "-fmodules-ts" } // friend injection then definition injection export module foo; // { dg-module-cmi foo } template class TPL { friend void foo (T, void *); // { dg-warning "non-template function" } T member; }; template class DEF { friend void foo (U x, void *p) { auto *obj = reinterpret_cast *> (p); obj->member = x; } }; template class TPL; // instantiate template class DEF; // instantiate