75 lines · c
1@import templates_top;2 3template<typename T> class Vector;4 5template<typename T> class Vector;6 7template<typename T> class List;8template<> class List<bool> {9public:10 void push_back(int);11};12namespace N {13 template<typename T> class Set;14}15namespace N {16 template<typename T> class Set {17 public:18 void insert(T);19 };20}21 22constexpr unsigned List<int>::*size_left = &List<int>::size;23List<int> list_left = { 0, 8 };24typedef List<int> ListInt_left;25 26template <typename T>27void pendingInstantiationEmit(T) {}28void triggerPendingInstantiation() {29 pendingInstantiationEmit(12);30 pendingInstantiationEmit(42.);31}32 33void redeclDefinitionEmit(){}34 35typedef Outer<int>::Inner OuterIntInner_left;36 37int defineListDoubleLeft() {38 List<double> ld;39 ld.push_back(0.0);40 return ld.size;41}42 43template<typename T> struct MergePatternDecl;44 45extern template struct ExplicitInstantiation<false, false>;46extern template struct ExplicitInstantiation<false, true>;47extern template struct ExplicitInstantiation<true, false>;48extern template struct ExplicitInstantiation<true, true>;49 50void useExplicitInstantiation() {51 ExplicitInstantiation<true, false>().f();52 ExplicitInstantiation<true, true>().f();53}54 55template<typename> struct DelayUpdates;56template<> struct DelayUpdates<int>;57template<typename T> struct DelayUpdates<T*>;58template<typename T> void testDelayUpdates(DelayUpdates<T> *p = 0) {}59 60void outOfLineInlineUseLeftF(void (OutOfLineInline<int>::*)() = &OutOfLineInline<int>::f);61void outOfLineInlineUseLeftG(void (OutOfLineInline<int>::*)() = &OutOfLineInline<int>::g);62void outOfLineInlineUseLeftH(void (OutOfLineInline<int>::*)() = &OutOfLineInline<int>::h);63 64namespace EmitDefaultedSpecialMembers {65 inline void f() {66 SmallString<256> SS;67 };68}69 70inline int *getStaticDataMemberLeft() {71 return WithUndefinedStaticDataMember<int[]>::undefined;72}73 74inline WithAttributes<int> make_with_attributes_left() { return WithAttributes<int>(); }75