opCmp with template type not working.
Paul Backus
snarwin at gmail.com
Wed Nov 4 15:51:04 UTC 2020
On Wednesday, 4 November 2020 at 09:01:21 UTC, Dominikus Dittes
Scherkl wrote:
> On Tuesday, 3 November 2020 at 03:07:14 UTC, user1234 wrote:
>
>> opCmp should return a signed integer.
> No. opCmp should return a float, to have all 4 possible
> comparison results available:
> greater (1)
> lower (-1)
> equal (0) and
> not comparable (NaN)
>
> Especially the last one is necessary if you like to have opCmp
> defined on some not completely ordered set.
opCmp can return whatever you want, as long as it is comparable
with 0 using the `<`, `>`, `<=`, and `>=` operators:
https://dlang.org/spec/operatoroverloading.html#compare
IMO there's no reason to use a floating-point number unless you
specifically need partial ordering. For the common case of a
totally-ordered type, a signed integer is fine.
More information about the Digitalmars-d
mailing list