150
|
1 template<typename T> class Vector;
|
|
2
|
|
3 template<typename T> class List {
|
|
4 public:
|
|
5 void push_back(T);
|
|
6
|
|
7 struct node {};
|
|
8 node *head;
|
|
9 unsigned size;
|
|
10 };
|
|
11
|
|
12 extern List<double> *instantiateListDoubleDeclaration;
|
|
13 extern List<long> *instantiateListLongDeclaration;
|
|
14
|
|
15 namespace A {
|
|
16 class Y {
|
|
17 template <typename T> friend class WhereAmI;
|
|
18 };
|
|
19 }
|
|
20
|
|
21 template <typename T> class A::WhereAmI {
|
|
22 public:
|
|
23 static void func() {}
|
|
24 };
|
|
25
|
|
26 template<typename T> struct Outer {
|
|
27 struct Inner {};
|
|
28 };
|
|
29
|
|
30 template<bool, bool> struct ExplicitInstantiation {
|
|
31 void f() {}
|
|
32 };
|
|
33
|
|
34 template<typename> struct DelayUpdates {};
|
|
35
|
|
36 template<typename T> struct OutOfLineInline {
|
|
37 void f();
|
|
38 void g();
|
|
39 void h();
|
|
40 };
|
|
41 template<typename T> inline void OutOfLineInline<T>::f() {}
|
|
42 template<typename T> inline void OutOfLineInline<T>::g() {}
|
|
43 template<typename T> inline void OutOfLineInline<T>::h() {}
|
|
44
|
|
45 namespace EmitDefaultedSpecialMembers {
|
|
46 template<typename T> struct SmallVectorImpl {
|
|
47 SmallVectorImpl() {}
|
|
48 ~SmallVectorImpl() {} // non-trivial dtor
|
|
49 };
|
|
50 template<typename T, unsigned N> struct SmallVector : SmallVectorImpl<T> {
|
|
51 // trivial dtor
|
|
52 };
|
|
53 template<unsigned N> struct SmallString : SmallVector<char, N> {
|
|
54 // trivial dtor
|
|
55 };
|
|
56 }
|
|
57
|
|
58 template<typename T> struct WithUndefinedStaticDataMember {
|
|
59 static T undefined;
|
|
60 };
|
|
61
|
|
62 template<typename T> struct __attribute__((packed, aligned(2))) WithAttributes {
|
|
63 T value;
|
|
64 };
|
|
65 WithAttributes<int> *get_with_attributes();
|