opEquals/opCmp returning other types

Brian Palmer brian+d at codekitchen.net
Mon Mar 19 08:17:20 PDT 2012


On Monday, 19 March 2012 at 01:29:50 UTC, H. S. Teoh wrote:

> In C++, for example, you can define operator<() and operator>() 
> in
> completely arbitrary ways, which means they can be totally 
> unrelated to
> each other, and return results that have nothing to do with 
> each other.
> This causes inconsistency in that a<b does not necessarily 
> imply b>a,
> and vice versa. Which makes for inconsistent code.

While I totally get that concern, I've never really seen it 
become a real issue in any of the large C++ systems I've worked 
on. Maybe I've just been lucky? Ruby also allows these arbitrary 
operator redefinitions, and it's never been an issue in the large 
Ruby systems I've worked on, either. Python also allows them, 
though I don't have much Python experience.

In fact, a lot of the most useful DSLs in Ruby rely heavily on 
being able to do these overrides. I think D today is missing out 
on a lot of those possibilities.


More information about the Digitalmars-d mailing list