Home | History | Annotate | Download | only in Inputs
      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 extern List<long> *instantiateListLongDeclaration;
     14 
     15 namespace A {
     16   class Y {
     17     template <typename T> friend class WhereAmI;
     18   };
     19 }
     20 
     21 template <typename T> class A::WhereAmI {
     22 public:
     23   static void func() {}
     24 };
     25 
     26 template<typename T> struct Outer {
     27   struct Inner {};
     28 };
     29 
     30 template<bool, bool> struct ExplicitInstantiation {
     31   void f() {}
     32 };
     33 
     34 template<typename> struct DelayUpdates {};
     35 
     36 template<typename T> struct OutOfLineInline {
     37   void f();
     38   void g();
     39   void h();
     40 };
     41 template<typename T> inline void OutOfLineInline<T>::f() {}
     42 template<typename T> inline void OutOfLineInline<T>::g() {}
     43 template<typename T> inline void OutOfLineInline<T>::h() {}
     44 
     45 namespace EmitDefaultedSpecialMembers {
     46   template<typename T> struct SmallVectorImpl {
     47     SmallVectorImpl() {}
     48     ~SmallVectorImpl() {} // non-trivial dtor
     49   };
     50   template<typename T, unsigned N> struct SmallVector : SmallVectorImpl<T> {
     51     // trivial dtor
     52   };
     53   template<unsigned N> struct SmallString : SmallVector<char, N> {
     54     // trivial dtor
     55   };
     56 }
     57 
     58 template<typename T> struct WithUndefinedStaticDataMember {
     59   static T undefined;
     60 };
     61