On Wednesday, 25 October 2017 at 07:46:49 UTC, Andrey wrote:
good alternative, I already forgot about the power of structs after Java.

It would be a very good solution if we can init a struct using its named field. Something like:

struct S
{
  int a;
  int b;
  int c;
}

S test = { a:1, b:4; };

So:

void myFunc(S param);  =>   myFunc({a:1, b:3});

I know: you say that this has trouble with overloading:

void myFunc(S param);
void myFunc(T param);

But the same goes for this:
void f(float i) { writeln("float"); }
void f(double i) { writeln("double"); }
f(1);

And simply it won't compile. (for template arguments too)
You can solve this doing: f(1.0f); or f(1.0);

In the same way you can solve first problem calling:
myFunc({a:1, b:3}.to!S) or myFunc(S{a:1, b:3}) or myFunc(cast(S){a:1, b:3}) or some other exotic syntax you want add to language, if needed (rarely, i guess).

And the same goes for:

auto blah = {a:1, b:2};

Reply via email to