On 9/29/11 10:39 AM, Steven Schveighoffer wrote:
The runtime failure makes code that was not quite fully defined (i.e. cannot compare two const objects) to badly defined (you can compare them, but you get an exception), especially when a const version is *easy* to create. I mean, all you are doing is comparing two immutable strings, that should be doable using const. Now I have to nag the author of MyExistingClass to change his opEquals to const.
I agree with this characterization.
Compare changing opEquals to const instead of just *adding* a const version of opEquals. With a straight change, the code doesn't compile and you put const on opEquals wherever it complains. Now it's still fully defined and runs the same as before. How is that a bad thing?
It's a bad thing because it breaks existing code. Andrei