On Sunday, 27 November 2011 at 19:50:24 UTC, deadalnix wrote:
Hi,

I wonder why struct can't have a default constructor. TDPL state that it is required to allow every types to have a constant .init .

That is true, however not suffiscient. A struct can has a void[constant] as a member and this doesn't have a .init . So this limitation does not ensure that the benefit claimed is garanteed.

Additionnaly, if it is the only benefit, this is pretty thin compared to the drawback of not having a default constructor.

Think the argument is that declaring `T t;` must be CTFE, which kind of implies a T.init state (which may have non-deterministic values in the presence of " = void").

This is mostly for declaring things static, and the whole "constructors are run after the .init blit".

But even then:
T t; //value is T.init, if not @disable this()
T t = T(); //Potentially run-time

I've started threads and tried to start discussions about this before, but to no avail. It's a relativelly recurrent complain, especially from "newer" C++ users. The older D users have either of thrown in the towel, or implemented "workarounds".

Reply via email to