1 /*
2 TEST_OUTPUT:
3 ---
4 fail_compilation/fail15616a.d(41): Error: none of the overloads of 'foo' are callable using argument types (double), candidates are:
5 fail_compilation/fail15616a.d(14):        fail15616a.foo(int a)
6 fail_compilation/fail15616a.d(17):        fail15616a.foo(int a, int b)
7 fail_compilation/fail15616a.d(26):        fail15616a.foo(int a, int b, int c)
8 fail_compilation/fail15616a.d(29):        fail15616a.foo(string a)
9 fail_compilation/fail15616a.d(32):        fail15616a.foo(string a, string b)
10 fail_compilation/fail15616a.d(41):        ... (3 more, -v to show) ...
11 ---
12 */
13 
foo(int a)14 void foo(int a)
15 {}
16 
foo(int a,int b)17 void foo(int a, int b)
18 {}
19 
20 void foo(T)(T a) if (is(T == float))
21 {}
22 
23 void foo(T)(T a) if (is(T == char))
24 {}
25 
foo(int a,int b,int c)26 void foo(int a, int b, int c)
27 {}
28 
foo(string a)29 void foo(string a)
30 {}
31 
foo(string a,string b)32 void foo(string a, string b)
33 {}
34 
foo(string a,string b,string c)35 void foo(string a, string b, string c)
36 {}
37 
38 
main()39 void main()
40 {
41     foo(3.14);
42 }
43