On Friday, 18 February 2022 at 14:37:25 UTC, Ali Çehreli wrote:
On 2/18/22 06:19, kdevel wrote:
> // auto b3 = B ("A", "B"); // Error: cannot implicitly
convert
> // expression `"A"` of type `string` to `A`
Yeah, D disallows some implicit conversions.
Adding a constructor to B will make it work:
this(string as, string bs) {
this.a = A(as);
this.b = A(bs);
}
}
Okay. b0 needs an additional constructor with signature this (A,
A).
The initialization of b3 is now no longer working. dmd says:
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?