internal compiler error with immutable

Ali Çehreli via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Feb 9 16:22:58 PST 2015


On 02/08/2015 05:21 AM, Danny wrote:

> The obvious
>      bool opEquals(immutable(C) b) immutable {
>          return value == b.value;
>      }
> doesn't work. Probably have to override the one from Object ? Even
> though I don't really use polymorphism here.
>
>      override bool opEquals(Object b) immutable {
>          return value == (cast(immutable(C)) b).value;
>      }
>
> Nope. Doesn't work (or compile) either.

Yes, opEquals for classes has a particular syntax:

   http://ddili.org/ders/d.en/object.html#ix_object.opEquals

Remember that 'const' binds to immutable as well. The following works 
with at least git head:

     override bool opEquals(Object b) const {
         auto rhs = cast(C)b;
         return rhs && (value == rhs.value);
     }

Ali



More information about the Digitalmars-d-learn mailing list