| @import templates_top; |
| |
| template<typename T> class Vector; |
| |
| template<typename T> class Vector; |
| |
| template<typename T> class List; |
| template<> class List<bool> { |
| public: |
| void push_back(int); |
| }; |
| namespace N { |
| template<typename T> class Set; |
| } |
| namespace N { |
| template<typename T> class Set { |
| public: |
| void insert(T); |
| }; |
| } |
| |
| constexpr unsigned List<int>::*size_left = &List<int>::size; |
| List<int> list_left = { 0, 8 }; |
| typedef List<int> ListInt_left; |
| |
| template <typename T> |
| void pendingInstantiationEmit(T) {} |
| void triggerPendingInstantiation() { |
| pendingInstantiationEmit(12); |
| pendingInstantiationEmit(42.); |
| } |
| |
| void redeclDefinitionEmit(){} |
| |
| typedef Outer<int>::Inner OuterIntInner_left; |
| |
| int defineListDoubleLeft() { |
| List<double> ld; |
| ld.push_back(0.0); |
| return ld.size; |
| } |
| |
| template<typename T> struct MergePatternDecl; |
| |
| extern template struct ExplicitInstantiation<false, false>; |
| extern template struct ExplicitInstantiation<false, true>; |
| extern template struct ExplicitInstantiation<true, false>; |
| extern template struct ExplicitInstantiation<true, true>; |
| |
| void useExplicitInstantiation() { |
| ExplicitInstantiation<true, false>().f(); |
| ExplicitInstantiation<true, true>().f(); |
| } |
| |
| template<typename> struct DelayUpdates; |
| template<> struct DelayUpdates<int>; |
| template<typename T> struct DelayUpdates<T*>; |
| template<typename T> void testDelayUpdates(DelayUpdates<T> *p = 0) {} |
| |
| void outOfLineInlineUseLeftF(void (OutOfLineInline<int>::*)() = &OutOfLineInline<int>::f); |
| void outOfLineInlineUseLeftG(void (OutOfLineInline<int>::*)() = &OutOfLineInline<int>::g); |
| void outOfLineInlineUseLeftH(void (OutOfLineInline<int>::*)() = &OutOfLineInline<int>::h); |
| |
| namespace EmitDefaultedSpecialMembers { |
| inline void f() { |
| SmallString<256> SS; |
| }; |
| } |
| |
| inline int *getStaticDataMemberLeft() { |
| return WithUndefinedStaticDataMember<int[]>::undefined; |
| } |
| |
| inline WithAttributes<int> make_with_attributes_left() { return WithAttributes<int>(); } |