On Wednesday, 20 March 2013 at 04:39:14 UTC, Jonathan M Davis wrote:
On Tuesday, March 19, 2013 20:51:28 Stewart Gordon wrote:
But the question still remains: How do we implement this change without causing mass disruption? It might be the case that programmers just need to remove opEquals(Object) and opCmp(Object) from their classes, and remove the override attribute from toHash and toString (and declare them const as appropriate). But there will be a lot of libraries to
convert, and it will take time for them all to be converted.

I expect that we'll figure out how to do that when we're ready to actually start the transition process, but the obvious thing to do to start with would be to deprecate opEquals, opCmp, toHash, and toString on Object, which should then cause a number of deprecation warnings. That likely wouldn't be enough, but it would be a start. Additional compiler warnings would probably need to be added at some point, and eventually those functions would be outright removed. But regardless of how it's approached, it's obviously going to require changing existing code, and it's going to be disruptive. We can't avoid that, just mitigate it. But it _is_ a change that we're going to need to make in order to solve some of the problems surrounding opEquals et al and const. The main issue at this point is gettnig the work necessary to be able to make the transition done (and since that includes changes to the AA
implementation, it's far from a small undertaking).

- Jonathan M Davis

Wouldn't that trigger bunch of false warning on legitimate overloaded opSomething ?

Reply via email to