1 | template<typename T> struct S { |
2 | __attribute__((always_inline)) static int f() { return 0; } |
3 | __attribute__((always_inline, visibility("hidden"))) static int g() { return 0; } |
4 | }; |
5 | |
6 | extern template struct S<int>; |
7 | |
8 | template<typename T> T min(T a, T b) { return a < b ? a : b; } |
9 | |
10 | extern decltype(min(1, 2)) instantiate_min_decl; |
11 | |
12 | template<typename T> struct CtorInit { |
13 | static int f() { return 0; } |
14 | int a; |
15 | CtorInit() : a(f()) {} |
16 | }; |
17 | |
18 | namespace ImplicitSpecialMembers { |
19 | struct A { |
20 | A(const A&); |
21 | }; |
22 | struct B { |
23 | A a; |
24 | B(int); |
25 | }; |
26 | struct C { |
27 | A a; |
28 | C(int); |
29 | }; |
30 | struct D { |
31 | A a; |
32 | D(int); |
33 | }; |
34 | } |
35 | |
36 | namespace OperatorDeleteLookup { |
37 | struct A { void operator delete(void*); virtual ~A() = default; }; |
38 | template<typename T> struct B { void operator delete(void*); virtual ~B() {} typedef int t; }; |
39 | typedef B<int>::t b_int_instantated; |
40 | } |
41 | |
42 | namespace EmitInlineMethods { |
43 | struct A { |
44 | void f() {} |
45 | void g(); |
46 | }; |
47 | struct B { |
48 | void f(); |
49 | void g() {} |
50 | }; |
51 | } |
52 | |