107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch@import templates_top; 207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdochtemplate<typename T> class Vector { 407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdochpublic: 507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch void push_back(const T&); 607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch}; 707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdochtemplate<typename T> class List; 9c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)template<> class List<bool> { 1007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdochpublic: 1107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch void push_back(int); 1207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch}; 13c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 14namespace N { 15 template<typename T> class Set { 16 public: 17 void insert(T); 18 }; 19} 20 21constexpr unsigned List<int>::*size_right = &List<int>::size; 22List<int> list_right = { 0, 12 }; 23typedef List<int> ListInt_right; 24 25template <typename T> 26void pendingInstantiationEmit(T) {} 27void triggerPendingInstantiationToo() { 28 pendingInstantiationEmit(12); 29} 30 31void redeclDefinitionEmit(){} 32 33typedef Outer<int>::Inner OuterIntInner_right; 34 35int defineListDoubleRight() { 36 List<double> ld; 37 ld.push_back(0.0); 38 return ld.size; 39} 40 41template<typename T> struct MergePatternDecl; 42 43void outOfLineInlineUseRightF(void (OutOfLineInline<int>::*)() = &OutOfLineInline<int>::f); 44void outOfLineInlineUseRightG(void (OutOfLineInline<int>::*)() = &OutOfLineInline<int>::g); 45void outOfLineInlineUseRightH(void (OutOfLineInline<int>::*)() = &OutOfLineInline<int>::h); 46