On Sunday, 25 February 2018 at 04:06:43 UTC, Meta wrote:
I just filed this bug:
https://issues.dlang.org/show_bug.cgi?id=18520
Not only does the following code compile and link successfully,
it prints 0 three times when ran:
alias f = (int n) => 0;
alias f = (char c) => 'a';
alias f = (bool b) => false;
void main()
{
import std.stdio;
writeln(f(int.init)); //Prints 0
writeln(f(char.init)); //Prints 0
writeln(f(bool.init)); //Prints 0
}
[...]
4. Is there any different semantically or mechanically between
my first and second examples?
Type promotions to int maybe?
Have you tried casting them?
void main()
{
import std.stdio;
writeln(f(cast(int)int.init));
writeln(f(cast(char)char.init));
writeln(f(cast(bool)bool.init));
}