WAT: opCmp and opEquals woes

deadalnix via Digitalmars-d digitalmars-d at puremagic.com
Wed Jul 23 18:37:00 PDT 2014


On Thursday, 24 July 2014 at 00:28:06 UTC, Jonathan M Davis wrote:
> On Wednesday, 23 July 2014 at 21:36:16 UTC, Andrei Alexandrescu 
> wrote:
>> On 7/23/14, 12:04 PM, H. S. Teoh via Digitalmars-d wrote:
>>> If autogenerating opEquals to be opCmp()==0 is a no-go, then 
>>> I'd much
>>> rather say it should be a compile error if the user defines 
>>> opCmp but
>>> not opEquals.
>>
>> No. There is this notion of partial ordering that makes 
>> objects not smaller and not greater than others, yet not 
>> equal. --
>
> I would strongly argue that if lhs.opCmp(rhs) == 0 is not 
> equivalent to lhs == rhs, then it that type is broken and 
> should not be using opCmp to do its comparisons. 
> std.algorithm.sort allows you to use any predicate you want, 
> allowing for such orderings, but it does not work with generic 
> code for a type to define opCmp or opEquals such that they're 
> not consistent, because that's not consistent with how 
> comparisons work for the built-in types.
>
> - Jonathan M Davis

floating point ?


More information about the Digitalmars-d mailing list