this() not executing code on structs
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Fri Oct 23 07:46:47 PDT 2009
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
More information about the Digitalmars-d
mailing list