Structs are Not Plain: A call for empty struct constructors
Max Samukha
maxsamukha at gmail.com
Fri Sep 20 04:42:51 UTC 2019
On Thursday, 19 September 2019 at 20:25:53 UTC, Jonathan M Davis
wrote:
It has to do
> with how D was designed with the idea that every type has an
> init value which is known at compile time, and various
> operations rely on being able to simply blit that init value.
We understand the rationale behind the design. The point is that
the idea has never worked. If you define a destructor, you most
certainly want the object to be non-trivially initialized at run
time. New instances of
that type, even "branded" with .init, are NOT initialized - they
are in an invalid state. That is why almost every D struct with a
destructor is compelled to implement those opCall/external
constructor/lazy initialization hacks.
More information about the Digitalmars-d
mailing list