Struct initialization has no effect or error?

Brett Brett at gmail.com
Thu Oct 3 04:33:26 UTC 2019


On Wednesday, 2 October 2019 at 17:54:20 UTC, H. S. Teoh wrote:
> On Wed, Oct 02, 2019 at 05:37:57PM +0000, Brett via 
> Digitalmars-d-learn wrote:
>> struct X { int a; }
>> 
>> X[1] x;
>> 
>> x[0] = {3};
>> 
>> or
>> 
>> x[0] = {a:3};
>> 
>> fails;
>
> This works:
>
> 	x[0] = X(123);
>
>
>> Should the syntax not extend to the case of array assignment?
>
> Arguably it should. But it's mainly cosmetic, since the X(123) 
> syntax works just fine. (It *is* an incongruity in D's syntax, 
> though. It's not a big deal once you learn it, but it's a bit 
> counterintuitive the first time you need to use it.)
>
>
>> This avoids a double copy.
> [...]
>
> Which any modern optimizer would optimize away.
>
>
> T

I was trying to avoid such things since X is quite long in name. 
Not a huge deal... and I do not like the syntax because it looks 
like a constructor call.


More information about the Digitalmars-d-learn mailing list