On Friday, 27 January 2017 at 19:32:29 UTC, Jesse Phillips wrote:
On Thursday, 26 January 2017 at 00:02:03 UTC, Profile Anaysis wrote:
Many times we pass compound types(non-primitives) as arguments to functions.

I don't understand what issue you are solving. I see an undefined syntax:

foo(|a,b,|c1,c2,3||,|e|,|f,g,c|)

To replace an existing syntax:

foo(T1(a,b,new X(c1,c2,c3)),T2(e),T3(f,g,c));

The primary difference I'm seeing is that the undefined syntax doesn't specify what type is being created. To this end the one time I recall desiring this is when using std.variant:


The type is deduced from the function call. There is no need to specify it or specify new. This is why the syntax reduces the complexity(of course, at the cost of increase terseness) and lines.


e.g., for your foo to be valid, it must have a declaration of foo(T1,T2,T3).

So why should we have to specify that when the compiler can do it for us?

The special syntax informs the compiler that we are initializing the types with the given arguments and it simply rewrites it in the long hand form.

It can only be used when the type can be deduced.




Reply via email to