Don wrote:
Bartosz Milewski wrote:
Andrei Alexandrescu Wrote:
this() { myCount = count++; } // ERROR
It's worse than that. Try this:
struct foo {
this(int dummy = 0) { writeln("Default constructor");}
}
foo x = foo();
Nothing gets printed. If default constructors are disallowed, so
should constructors with all parameters defaulted.
Ouch.
It's because it's interpreting foo() as a struct literal.
If a struct has any constructors, struct literals should be disabled.
http://d.puremagic.com/issues/show_bug.cgi?id=3438
The more I think of it, the more imperious it becomes that we allow
default constructors that execute code. The main question is what to do
about .init.
Andrei