Classes and @disable this()

Steven Schveighoffer via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Feb 9 10:29:22 PST 2015


On 2/8/15 2:57 PM, Jonathan M Davis via Digitalmars-d-learn wrote:
> On Sunday, February 08, 2015 17:51:09 bearophile via Digitalmars-d-learn wrote:
>> fra:
>>
>>> However making it a compiler error would be far, far better
>>
>> I think this can be filed in Bugzilla as diagnostic enhancement:
>>
>>
>> class Foo {
>>       @disable this();
>>       this(int i) {}
>> }
>> void main() {}
>
> The compiler should probably just give you an error telling you that
> disabling the default constructor on classes is illegal. And since no
> default constructor is automatically declared if you declare another
> constructor, there isn't even any point in disabling the default constructor
> (which is probably why no one has been complaining about this). @disable
> this() only makes sense on structs.

Why? I think it's perfectly acceptable.

What should be illegal is if you extend Foo and don't @disable this on 
the derivative.

-Steve



More information about the Digitalmars-d-learn mailing list