const(Object)ref is here!
Steven Schveighoffer
schveiguy at yahoo.com
Mon Dec 6 07:37:27 PST 2010
On Mon, 06 Dec 2010 10:11:30 -0500, so <so at so.do> wrote:
>> 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?
auto ref doesn't matter, these are classes, they are always ref ;)
All that is needed is to make opEquals const (and its arguments const) as
you say.
> With a glance to source code, looks like all that is required is just a
> few lines of change.
It should be relatively painless. Just change the signatures of the base
functions, and fix any compile errors.
-Steve
More information about the Digitalmars-d
mailing list