opCmp, [partial/total/pre]orders, custom floating point types etc.

tsbockman via Digitalmars-d digitalmars-d at puremagic.com
Tue Jan 12 13:12:08 PST 2016


On Tuesday, 12 January 2016 at 20:56:41 UTC, John Colvin wrote:
> Please consider the second design I proposed? It's small, 
> simple, has no impact on existing code and works in the right 
> direction (library types can emulate / act as replacements for 
> builtins) as opposed to the other way (library types are second 
> class).

If non-total ordering is going to be supported, I don't 
understand what's wrong with just allowing this:

     bool opCmp(string op, T)(T right) const { }

As an alternative to the current:

     bool opEquals(T)(T right) const { }
     int opCmp(T)(T right) const { }

Make it a compile-time error for a type to implement both. There 
is no need to deprecate the current system - people can even be 
encouraged to continue using it, in the very common case where it 
can actually express the desired logic.

This approach is simple and breaks no existing code. It is also 
optimally efficient with respect to runtime performance.


More information about the Digitalmars-d mailing list