1 module def; 2 3 4 int def_a(int i) { 5 return 10; 6 } 7 8 int def_a(double d){ 9 return 20; 10 } 11 12 int def_a2(int i, double d=4.5) { 13 return cast(int) (100*d + i); 14 } 15 16 int def_a3(int[] i...) { 17 int ret = 42; 18 foreach(_i; i) ret += _i; 19 return ret; 20 } 21 22 string def_a4(string s1, int i1, string s2 = "friedman", int i2 = 4, string s3 = "jefferson") { 23 import std.format: format; 24 return format("<'%s', %s, '%s', %s, '%s'>", s1, i1, s2, i2, s3); 25 } 26 27 int def_t1(T)(T i) { 28 return 1; 29 } 30 31 template def_t2(T) { 32 int f(T t) { 33 return 1; 34 } 35 } 36 37 38 auto def_t1_int(int i) { 39 return def_t1!int(i); 40 } 41 42 43 auto def_t2_int(int i) { 44 return def_t2!int.f(i); 45 } 46 47 48 long overload(string s) { 49 return s.length; 50 } 51 52 53 long overload(int i) { 54 return -i; 55 }