Here is the example:
    alias f1 = (string  ) {}; f1(int   .init);
    alias f2 = (string s) {}; f2(int   .init);
    alias f3 = (int     ) {}; f3(string.init);
    alias f4 = (int i   ) {}; f4(string.init);

"f1" case compiles successfully and all others are not (error is "is not callable using argument types").

Question is why does f1 case compile?

Furthermore even these do compile:
    f1(float.init);

    struct S{}
    f1(S.init);

Reply via email to