== operator

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Sat Jan 3 22:35:22 PST 2015


On 1/3/15 8:43 PM, Jonathan Marler wrote:
> On Sunday, 4 January 2015 at 03:14:31 UTC, Andrei Alexandrescu wrote:
>> On 1/3/15 5:30 PM, Jonathan Marler wrote:
>>> I've recently looked at how the '==' operator works with classes.  I was
>>> disappointed to find that 'a == b' always gets rewritten to:
>>>
>>> .object.opEquals(a, b);
>>>
>>> The reason for my disappointment is that this results in unnecessary
>>> overhead. I would think that the compiler would first try to rewrite the
>>> '==' operator using a type-specific opEquals method, then fall back on
>>> the generic version if one did not exist.  Is there a reason for this?
>>
>> TDPL has a detailed explanation of that, including a reference to
>> Java's approach. There's less overhead in calling the free function in
>> object (it's inlinable and if e.g. the references are equal there's no
>> virtual call overhead).
>>
>> Andrei
>
> Can you point me to that detailed explanation?

You'd need to buy TDPL. In turn, TDPL refers this article: 
http://www.drdobbs.com/jvm/java-qa-how-do-i-correctly-implement-th/184405053 
-- Andrei



More information about the Digitalmars-d mailing list