15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template<typename T> struct S {
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  __attribute__((always_inline)) static int f() { return 0; }
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  __attribute__((always_inline, visibility("hidden"))) static int g() { return 0; }
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern template struct S<int>;
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template<typename T> T min(T a, T b) { return a < b ? a : b; }
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern decltype(min(1, 2)) instantiate_min_decl;
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template<typename T> struct CtorInit {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static int f() { return 0; }
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int a;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CtorInit() : a(f()) {}
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)