Null pointer dereferencing in D

John Colvin via Digitalmars-d digitalmars-d at puremagic.com
Sat Jun 14 08:42:09 PDT 2014


On Saturday, 14 June 2014 at 15:22:07 UTC, Andrei Alexandrescu
wrote:
> On 6/14/14, 5:33 AM, Dicebot wrote:
>> On Saturday, 14 June 2014 at 10:15:49 UTC, Marc Schütz wrote:
>>> Huh? Types with `@disable this()` still have an `init` value. 
>>> All it
>>> does is disallow instantiating the type without specifying an
>>> initializer (e.g. a struct literal, a value returned from a 
>>> factory
>>> function, or `static opCall()`).
>>
>> Which is effectively a type system hole with @disable this :
>>
>> struct A { @disable this(); }
>> auto a = A.init;
>
> I disagree it's a loophole. A.init is a preexisting object. 
> That said, I do understand that sometimes one wants to inhibit 
> A.init, which can be achieved by e.g. making it a private 
> member. -- Andrei

template init() { static assert(false); }


More information about the Digitalmars-d mailing list