How will we fix opEquals?

Don nospam at nospam.com
Thu Feb 10 01:36:56 PST 2011


so wrote:
>> (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.
> 
> It doesn't look like we can solve this by switching the constness of an 
> Object.function,
> unless we also state that every function in Object must be const and 
> accept the fact that no one would use these functions for other purposes 
> like caching, late binding etc...


I can think of many examples where opEquals would be logically pure, but 
not formally pure, but it's harder to come up with ones where it is not 
const. I guess you can have situations where a lazily-computed hash 
value is cached in the object, to speed up comparisons, but it doesn't 
seem inappropriate for casts to be required when you're doing that.
Can you think of a use case where the calling function should know that 
opEquals() isn't truly const?


More information about the Digitalmars-d mailing list