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));
}

Reply via email to