WAT: opCmp and opEquals woes

H. S. Teoh via Digitalmars-d digitalmars-d at puremagic.com
Wed Jul 23 11:52:17 PDT 2014


On Wed, Jul 23, 2014 at 11:48:42AM -0700, Andrei Alexandrescu via Digitalmars-d wrote:
> On 7/23/14, 9:45 AM, H. S. Teoh via Digitalmars-d wrote:
> >Why isn't "a==b" rewritten as "a.opCmp(b)==0"?? I'm pretty sure TDPL
> >says this is the case (unfortunately I'm at work so I can't check my
> >copy of TDPL).
> >
> >https://issues.dlang.org/show_bug.cgi?id=13179
> >
> >:-(
> 
> It's a good decision. There are types that are comparable for equality
> but not compared for ordering. -- Andrei

That's the wrong way round. I fully agree that we should not
autogenerate opCmp if the user defines opEquals, since not all types
comparable with equality are orderable.  However, surely all orderable
types are equality-comparable! Therefore, if opCmp is defined but
opEquals isn't, then we should autogenerate opEquals to be the same as
a.opCmp(b)==0.


T

-- 
No! I'm not in denial!


More information about the Digitalmars-d mailing list