opEquals optimized away?

Ali Çehreli via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue May 5 21:38:12 PDT 2015


On 05/05/2015 04:30 PM, Manfred Nowak wrote:
 > On Tuesday, 5 May 2015 at 05:26:17 UTC, anonymous wrote:
 >
 >> because `c is c`
 >
 > Thanks. One can see this documented in
 >    http://dlang.org/operatoroverloading.html#equals
 >
 > But
 > 1: how can one override this behavior

There is now way in D other than changing the implementation:

 
https://github.com/D-Programming-Language/druntime/blob/master/src/object_.d#L141

(There is also object.di there but I think changing the function above 
should be sufficient.)

 > 2: what is the design reason for this

I am guessing:

- For correctness, an object should be equal to itself

- Preventing memory errors when the left-hand side object is null.

- Reducing boilerplate

 > Especially: how can one implement side effects on invoking `==' or `!='?
 >
 > -manfred

Can you use a member function instead as in c.eq(c)?

Ali



More information about the Digitalmars-d-learn mailing list