namespace Lib { inline namespace Lib_1 { template class A; } template void g(T); } struct MyClass { }; namespace Lib { template<> class A { }; } void someFunc() { Lib::A a; g(a); // ok, Lib is an associated namespace of A }