Hello,

The call signature for opCmp in a struct is:

struct S {
  int opCmp(ref const S s) const { ... }
}

int opCmp(ref const S s) const { return _val - s._val; }

This works fine if _val is 'int'. However, if _val is 'long' then subtracting 2 longs may not result in an int - and therefore I would have to replace the subtraction above with 2 comparison operators.

My question is: Can I rewrite opCmp to return a 'long', like:

struct S {
  long opCmp(ref const S s) const { return _val - s.val; }
}

This does compile and run correctly, but are there any hidden assumptions or requirements on the return value of opCmp that I should be aware of? Is there any reason that doing this may be not be wise?

Thanks,
Saurabh

Reply via email to