1@import templates_top;
2
3template<typename T> class Vector {
4public:
5  void push_back(const T&);
6};
7
8template<typename T> class List;
9template<> class List<bool> {
10public:
11  void push_back(int);
12};
13
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