initializing struct containing user defined type

Ali Çehreli acehreli at yahoo.com
Fri Feb 18 16:45:24 UTC 2022


On 2/18/22 07:01, kdevel wrote:

 >     Error: struct `B` has constructors, cannot use `{ initializers }`,
 >     use `B( initializers )` instead
 >
 > What is the rationale behind that? I mean: If the compiler exactly
 > sees what the program author intends to express why does it force the
 > author to change the code?

I don't know the answer to that. The {} initializers always seemed out 
of place to me. I assumed they had to be supported to copy+paste C code 
to D and it should mostly work.

One benefit of the {} initializer is being able use named initializers:

struct S {
   int a;
   int b;
}

void main() {
   S s = { b : 2, a : 1 };
}

I still think it's out of place. :)

I think that syntax will be obviated when D will have named arguments.

Ali



More information about the Digitalmars-d-learn mailing list