const(Object)ref is here!

so so at so.do
Mon Dec 6 07:11:30 PST 2010


> It doesn't work.  obj == obj calls .opEquals(obj, obj), whose signature  
> is:
>
> bool opEquals(Object obj1, Object obj2)
>
> So even if you mark a derived instance's opEquals as const, the derived  
> class is stripped back down to Object before any calls are made.
>
> Memoization and lazy calculations are not as important as being able to  
> compare const or immutable objects.
>
> -Steve

This one is a very serious issue.
Should changing their signatures to:
bool op###(auto ref const Object) const // breaking change but just  
signature

and addressing "auto ref" enough to fix it?

A few reports and Andrei's comment indicates that there is some  
misunderstanding(?) on semantics/implementation.
http://d.puremagic.com/issues/show_bug.cgi?id=4215#c4
http://d.puremagic.com/issues/show_bug.cgi?id=4668
http://d.puremagic.com/issues/show_bug.cgi?id=4258

With a glance to source code, looks like all that is required is just a  
few lines of change.

-- 
Using Opera's revolutionary email client: http://www.opera.com/mail/


More information about the Digitalmars-d mailing list