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 
     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 
     44 namespace EmitDefaultedSpecialMembers {
     45   template<typename T> struct SmallVectorImpl {
     46     SmallVectorImpl() {}
     47     ~SmallVectorImpl() {} // non-trivial dtor
     48   };
     49   template<typename T, unsigned N> struct SmallVector : SmallVectorImpl<T> {
     50     // trivial dtor
     51   };
     52   template<unsigned N> struct SmallString : SmallVector<char, N> {
     53     // trivial dtor
     54   };
     55 }
     56 
     57 template<typename T> struct WithUndefinedStaticDataMember {
     58   static T undefined;
     59 };
     60