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; };