| template<typename T> struct S { |
| __attribute__((always_inline)) static int f() { return 0; } |
| __attribute__((always_inline, visibility("hidden"))) static int g() { return 0; } |
| }; |
| |
| extern template struct S<int>; |
| |
| template<typename T> T min(T a, T b) { return a < b ? a : b; } |
| |
| extern decltype(min(1, 2)) instantiate_min_decl; |
| |
| template<typename T> struct CtorInit { |
| static int f() { return 0; } |
| int a; |
| CtorInit() : a(f()) {} |
| }; |
| |
| namespace ImplicitSpecialMembers { |
| struct A { |
| A(const A&); |
| }; |
| struct B { |
| A a; |
| B(int); |
| }; |
| struct C { |
| A a; |
| C(int); |
| }; |
| struct D { |
| A a; |
| D(int); |
| }; |
| } |
| |
| namespace OperatorDeleteLookup { |
| struct A { void operator delete(void*); virtual ~A() = default; }; |
| template<typename T> struct B { void operator delete(void*); virtual ~B() {} typedef int t; }; |
| typedef B<int>::t b_int_instantated; |
| } |
| |
| namespace EmitInlineMethods { |
| struct A { |
| void f() {} |
| void g(); |
| }; |
| struct B { |
| void f(); |
| void g() {} |
| }; |
| } |