On 12/07/2012 16:28, kenji hara wrote:
Is this really need?

The four const operators in Object should not block the user-defined
mutable operators.

// My purpose for 2.060 release
class C {
   override opEquals(const Object o) const { ... } // or just alias
super.opEquals opEquals;
   bool opEquals(Object o) { ... } // add overload for mutable object comparison
}

auto c1 = new C(), c2 = new C2();
c1 == c2;   // the both hand side is mutable, so mutable opEquals will run

In git head, it is not disallowed, but it is a *compiler bug*.
To fix the problem, I have a pull request for dmd.
https://github.com/D-Programming-Language/dmd/pull/1042
(The pull will kill attribute inference for const, but I think it is
unnecessary for D.)

...But, I would never opposed to advancing toward the better language design.


mutable and const overload of the same function is a bit weird. I'm not sure this is a bug a feature we should keep.

Reply via email to