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(); |
66 | |