I have a struct like this:

struct S
{
   int x;
   int y;
}

and I want a default comparison. The problem is, that comparison doesn't have a default, and requires I implement opCmp. While this is useful for the compiler, there's no default I know of that is an easy one-liner.

The truth is, I'm not entirely caring what order these things come out in. I just want them to be defined as having an order given that all the members have a defined order. My expectation is that a default opCmp would look like:

int opCmp(S other)
{
   if(x == other.x)
   {
       if(y == other.y) return 0;
       return y < other.y ? -1 : 1;
   }
   return x < other.x ? -1 : 1;
}

But really, as long as there is something to do this easily I don't care what the ordering turns out to be.

I can do equality like:

return this.tupleof == other.tupleof;

I can do assignment like:

this.tupleof = other.tupleof;

How do I do something really simple for opCmp? I tried this it didn't work:

return this == other ? 0 :
    this.tupleof < other.tupleof ? -1 : 1;

-Steve

Reply via email to