[Issue 10771] std.typecons.Nullable throws an exception on comparision of null values

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Aug 8 11:16:06 PDT 2013


http://d.puremagic.com/issues/show_bug.cgi?id=10771



--- Comment #2 from QAston <qaston at gmail.com> 2013-08-08 11:16:05 PDT ---
(In reply to comment #1)
> I'm not sure it should. It would blend the notion of *what* the comparison
> compares. For example, in the opposite case:
> 
>     Nullable!Test a;
>     Nullable!Test b = 5;
> 
>     if (a == b) ... //Legal ?
> 
> Arguably, this is a mistake, as a null was used in a comparison. But it now
> simply returns false.
> 
> And I don't think it's OK to assert when *one* of both are null, yet not both,
> so I'm not entirely sure about the proposed enhancement.

I forgot to say that I'd expect the case you posted as legal as well.

I thought that this was a simple analogy to how null works in the language, but
apparently at the time of posting I forgot that null is never compared with
opEquals, it uses [is] operator instead.

Phobos doc state that Nullable: "Defines a value paired with a distinctive
"null" state that denotes the absence of a value." I was paying more attention
to the "distinctive state" than to the "absence of a value". Now I see that it
makes no sense to compare absences. 

In my case it was useful however, so maybe this may be a candidate for a
separate type or template flag. Anyways comparision semantics should be
mentioned in the doc imo.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list