Home | History | Annotate | Download | only in Inputs
      1 @import templates_top;
      2 
      3 template<typename T> class Vector;
      4 
      5 template<typename T> class Vector;
      6 
      7 template<typename T> class List;
      8 template<> class List<bool> {
      9 public:
     10   void push_back(int);
     11 };
     12 namespace N {
     13   template<typename T> class Set;
     14 }
     15 namespace N {
     16   template<typename T> class Set {
     17   public:
     18     void insert(T);
     19   };
     20 }
     21 
     22 constexpr unsigned List<int>::*size_left = &List<int>::size;
     23 List<int> list_left = { 0, 8 };
     24 typedef List<int> ListInt_left;
     25 
     26 template <typename T>
     27 void pendingInstantiationEmit(T) {}
     28 void triggerPendingInstantiation() {
     29   pendingInstantiationEmit(12);
     30   pendingInstantiationEmit(42.);
     31 }
     32 
     33 void redeclDefinitionEmit(){}
     34 
     35 typedef Outer<int>::Inner OuterIntInner_left;
     36 
     37 int defineListDoubleLeft() {
     38   List<double> ld;
     39   ld.push_back(0.0);
     40   return ld.size;
     41 }
     42 
     43 template<typename T> struct MergePatternDecl;
     44 
     45 extern template struct ExplicitInstantiation<false, false>;
     46 extern template struct ExplicitInstantiation<false, true>;
     47 extern template struct ExplicitInstantiation<true, false>;
     48 extern template struct ExplicitInstantiation<true, true>;
     49 
     50 void useExplicitInstantiation() {
     51   ExplicitInstantiation<true, false>().f();
     52   ExplicitInstantiation<true, true>().f();
     53 }
     54 
     55 template<typename> struct DelayUpdates;
     56 template<> struct DelayUpdates<int>;
     57 template<typename T> struct DelayUpdates<T*>;
     58 template<typename T> void testDelayUpdates(DelayUpdates<T> *p = 0) {}
     59 
     60 void outOfLineInlineUseLeftF(void (OutOfLineInline<int>::*)() = &OutOfLineInline<int>::f);
     61 void outOfLineInlineUseLeftG(void (OutOfLineInline<int>::*)() = &OutOfLineInline<int>::g);
     62 void outOfLineInlineUseLeftH(void (OutOfLineInline<int>::*)() = &OutOfLineInline<int>::h);
     63