Weird opEquals Problem

Kevin Cox kevincox.ca at gmail.com
Wed Feb 22 18:17:17 PST 2012


Oh, ok.

First of all the docs appear somewhat misleading.  I thought that function
was an example on how to overload it.  That could be clarified a little.

Second of all, isn't that inefficient?  And  if you wanted to be able to
compare to another type you don't control?  I think it would make more
sense to have it pick the best match much like other overloads.
On Feb 22, 2012 9:05 PM, "H. S. Teoh" <hsteoh at quickfur.ath.cx> wrote:

> On Wed, Feb 22, 2012 at 08:51:50PM -0500, Kevin wrote:
> > I have the following code which gives the same result on ldc2 and
> > dmd.  If I compare two objects of different classes I always get
> > false even though the comparator is called.
> [...]
> > The key thing to notice is that opEquals() gets called both times.
> > Any ideas about what is happening?
>
> It's because when A and B are different types, the compiler translates
> A==B to:
>
>        A.opEquals(B) && B.opEquals(A)
>
> Both parties need to agree before they are considered equal.
>
>
> T
>
> --
> Shin: (n.) A device for finding furniture in the dark.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d-learn/attachments/20120222/0c690aa2/attachment.html>


More information about the Digitalmars-d-learn mailing list