template struct SomeTemplate {}; struct DefinedInCommon { void f(); struct Inner {}; friend void FoundByADL(DefinedInCommon); }; template struct CommonTemplate { enum E { a = 1, b = 2, c = 3 }; }; namespace Std { template struct WithFriend { friend bool operator!=(const WithFriend &A, const WithFriend &B) { return false; } }; } namespace Std { template void f() { extern T g(); } } template struct TemplateInstantiationVisibility { typedef int type; }; template struct Outer { template struct Inner { void f(); void g(); }; }; template struct WithPartialSpecialization {}; typedef WithPartialSpecialization WithPartialSpecializationUse; template struct WithExplicitSpecialization; typedef WithExplicitSpecialization WithExplicitSpecializationUse;