NotNull pointers
Timon Gehr
timon.gehr at gmx.ch
Tue Aug 30 08:34:11 PDT 2011
On 08/30/2011 04:58 PM, Christian Kamm wrote:
> I want to point out the following bug in the example, because it's *such* a
> common problem and, in my opinion, one of D's warts:
>
> Walter Bright wrote:
>> this(P q)
>> {
>> assert(q);
>> p = q;
>> }
>
> Try
> auto d = NotNull!Object(null);
>
> you'll get a segmentation fault and not an assert. That's because
> assert(someclass) does not check if someclass is non-null at all, it
> verifies its invariant instead!
>
> All the asserts should be assert(q !is null);.
>
Imho cast(bool)someclass should be changed to mean someclass !is null &&
someclass.__invariant() immediately, if that is even how Andrei and
Walter expect it to work.
More information about the Digitalmars-d
mailing list