1 template<typename T> class Vector; 2 3 template<typename T> class List { 4 public: 5 void push_back(T); 6 7 struct node {}; 8 node *head; 9 unsigned size; 10 }; 11 12 extern List<double> *instantiateListDoubleDeclaration; 13 14 namespace A { 15 class Y { 16 template <typename T> friend class WhereAmI; 17 }; 18 } 19 20 template <typename T> class A::WhereAmI { 21 public: 22 static void func() {} 23 }; 24 25 template<typename T> struct Outer { 26 struct Inner {}; 27 }; 28 29 template<bool, bool> struct ExplicitInstantiation { 30 void f() {} 31 }; 32 33 template<typename> struct DelayUpdates {}; 34 35 template<typename T> struct OutOfLineInline { 36 void f(); 37 void g(); 38 void h(); 39 }; 40 template<typename T> inline void OutOfLineInline<T>::f() {} 41 template<typename T> inline void OutOfLineInline<T>::g() {} 42 template<typename T> inline void OutOfLineInline<T>::h() {} 43