On Tuesday, 12 November 2013 at 09:40:52 UTC, Walter Bright wrote:
On 11/12/2013 1:33 AM, tn wrote:
I could not find any documentation on how the unordered
comparison operators (<>, !<>=, !<=, !<, !>=, !>, !<>) translate into opCmp calls.

That's because they just don't translate to opCmp calls.

Well, they seem to translate to something, because this works as expected:

  struct S {
      private double v;
      auto opCmp(S rhs) { return v - rhs.v; }
  }

  S v1 = S(1);
  S v2 = S(2);
  S vn = S(double.nan);
  assert((v2 < v1) == false);
  assert((v1 < v2) == true);
  assert((v1 < v1) == false);
  assert((v1 < vn) == false);
  assert((v2 !>= v1) == false);
  assert((v1 !>= v2) == true);
  assert((v1 !>= v1) == false);
  assert((v1 !>= vn) == true);


but then we went ahead and deprecated those operators

Maybe the spec then needs to be updated:

http://dlang.org/expression.html#RelExpression
http://dlang.org/expression.html#floating_point_comparisons

Reply via email to