On Sunday, 31 July 2016 at 07:10:46 UTC, cym13 wrote:
On Sunday, 31 July 2016 at 04:55:31 UTC, deadalnix wrote:
On Saturday, 30 July 2016 at 21:42:42 UTC, cym13 wrote:
[...]

That doesn't help. In fact, it makes things worse as now constructor calls and function call do not have the same syntax. You've just created an holly mess in the parser.

If something we should strive to get constructor call more like regular function call rather than less (for instance by behaving the same way when it comes to IFTI).

It is also unclear how overload resolution is supposed to work.

If I may suggest one thing it is to not start with the intended result for the DIP, but start from the intended change int he language, then, and only then, examine what comes out of it.

I don't understand this comment. This isn't about construction, it's about initialization, the call can occur only at one precise time and no there is no overload concern as there is no function call. The proposed change is litteraly just equivalent to the already existing struct initialization, just made usable:

    struct S {
        int a;
        int b;
    }

    auto s = S(b:42);
    // equivalent to
    S s = { b:42 };

Having the possibility to initialize structs without tying them to a variable proves useful when combined with functions that take this struct but those
functions aren't directly impacted by the change.

I think a feature like this would be very useful especially for User Defined Attributes where it is not possible to write:

S s = {b:42}

Being able to write:

@S(b:42) void foo();

would be great. I do not think there is another solution for this at the moment.

I am fine with using curly braces as well if it makes the grammar more clean.

@S{b:42} void foo();

Reply via email to