blob: f1a0bee212503d7c44b22791748fbfa41365ff35 [file] [log] [blame]
Richard Smithd28ac5b2014-03-22 23:33:22 +00001template<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
6extern template struct S<int>;
Richard Smith04d05b52014-03-23 00:27:18 +00007
8template<typename T> T min(T a, T b) { return a < b ? a : b; }
9
10extern decltype(min(1, 2)) instantiate_min_decl;
Richard Smithcd45dbc2014-04-19 03:48:30 +000011
12template<typename T> struct CtorInit {
13 static int f() { return 0; }
14 int a;
15 CtorInit() : a(f()) {}
16};
Richard Smith6de7a242014-07-31 23:46:44 +000017
18namespace 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}
Richard Smith4d235792014-08-07 18:53:08 +000035
36namespace 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}
Richard Smithc9cbde72014-08-13 21:15:09 +000041
42namespace EmitInlineMethods {
43 struct A {
44 void f() {}
45 void g();
46 };
47 struct B {
48 void f();
49 void g() {}
50 };
51}