[Issue 10771] std.typecons.Nullable throws an exception on comparision of null values
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri Aug 9 05:38:53 PDT 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10771
--- Comment #3 from monarchdodra at gmail.com 2013-08-09 05:38:51 PDT ---
(In reply to comment #2)
> (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.
Well, this is up to debate of course. I'd agree with you if Nullable was a
reference type, in which case, "==" would compare the references, and "a.get ==
b.get" or "a == 5" would be actual value comparisons.
Unfortunatly, Nullable is a value type, so I think it is safer to consider a
"null Nullable" as simply something you can't use or even compare to anything.
That's what I think anyways.
> 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.
RefCounted, (which uses reference semantics) may do what you need?
If you don't care for reference counting, then... raw pointers?
--
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