import std.stdio;
void foo(bool b) { writeln("bool"); } void foo(long l) { writeln("long"); } void main() { int num = 0; foo(num); foo(0); foo(2); } output: long bool longAs num = 0, for me both: "foo(num)" and "foo(0)" should give the same output ("long"), regardless that num is integer implicit declaration or not.