On 25/08/18 10:56, Walter Bright wrote:
On 8/24/2018 6:34 AM, Shachar Shemesh wrote:
No, unlike what I suggest, that doesn't work without carefully
reviewing every single place you put it to see whether the constructor
actually supports destructing a partially constructed object.
All D objects are default-initialized before the constructor sees it
(unlike C++). A destructor should be able to handle a
default-initialized object.
I'm not talking about a default initialized object. I'm talking about an
object where the constructor started running, but not to completion.
With that said, this statement is, I think, representative of the Lego
problem D has. All D objects? Really? Even this one?
struct A {
int a;
@disable this();
@disable init;
this(int number);
~this();
}
If you allow a feature to be disabled, you really need to keep in mind
that feature might be well and truly disabled.