1 template<typename T> struct SomeTemplate {}; 2 3 struct DefinedInCommon { 4 void f(); 5 struct Inner {}; 6 friend void FoundByADL(DefinedInCommon); 7 }; 8 9 template<typename T> struct CommonTemplate { 10 enum E { a = 1, b = 2, c = 3 }; 11 }; 12 13 namespace Std { 14 template<typename T> struct WithFriend { 15 friend bool operator!=(const WithFriend &A, const WithFriend &B) { return false; } 16 }; 17 } 18 19 namespace Std { f()20 template<typename T> void f() { 21 extern T g(); 22 } 23 } 24 25 template<typename T> struct TemplateInstantiationVisibility { typedef int type; }; 26 27 template<typename T> struct Outer { 28 template<typename U> struct Inner { 29 void f(); 30 void g(); 31 }; 32 }; 33 34 template<typename T> struct WithPartialSpecialization {}; 35 typedef WithPartialSpecialization<int*> WithPartialSpecializationUse; 36 37 template<typename T> struct WithExplicitSpecialization; 38 typedef WithExplicitSpecialization<int> WithExplicitSpecializationUse; 39