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)