How will we fix opEquals?

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Thu Feb 10 07:19:50 PST 2011


On 2/10/11 2:58 AM, Peter Alexander wrote:
> On 10/02/11 8:19 AM, Don wrote:
>> Andrei once stated a worthy goal: as far as possible, const should be
>> opt-in: it should be possible to code without requiring const on
>> everything.
>>
>> opEquals() is in conflict with this, since it is a member function of
>> Object.
>>
>> (1) If it is a const member function, then it will have a viral effect
>> on all objects -- any function called by opEquals will have to be marked
>> const.
>> (2) If it is not const, then const objects cannot be compared!
>>
>> Currently, it's not const, but the problem isn't visible because of
>> compiler bug 5080. (Same problem applies to opCmp).
>>
>> How will we break this dilemma?
>
> It's not possible.

It is, in fact, possible. We can define two opEquals overloads, for 
const and non-const. By default, the non-const version forwards to the 
const one.

Andrei



More information about the Digitalmars-d mailing list