On 09/11/2011 08:57 PM, Walter Bright wrote:
On 9/11/2011 9:08 AM, Max Samukha wrote:
This test case

struct S
{
@disable this();
this(int x)
{
}
}

class C
{
S s;
this()
{
s = S(42);
}
}

void main()
{
auto c = new C;
}

yields Error: default construction is disabled for type C

Is it a bug?

No, it's a feature!

That's sad. The question should rather have been: what do I do to use member structs that have default constructors disabled? Initially I thought that the compiler would treat the first assignment in the constructor specially as initializer. The error message "Error: constructor test.C.this field s must be initialized in constructor" suggested that. I was wrong.

So you completely disallowed runtime initialization of globals and members that have default constructors disabled? To me it looks like another feature that is a simple solution unusable in practice.

Reply via email to