Another idea to use inheritance and a pure virtual for cmp().

```
Example:
#include <iostream>

using namespace std;

class OpsFromCmp {
public:
  virtual bool  
  operator==(const OpsFromCmp &op1) {
    return cmp(this, &op1) == 0;
  }

  virtual
  bool
  operator>(const OpsFromCmp &op1) {
    return cmp(this, &op1) > 0;
  }

  virtual int cmp(const OpsFromCmp *a, const OpsFromCmp *b) = 0;
};


class MyClass: public OpsFromCmp {
  public:
  MyClass(int x): _x(x) {}
  
  virtual int cmp(const OpsFromCmp *a, const OpsFromCmp *b) {
    return reinterpret_cast<const MyClass*>(a)->_x - reinterpret_cast<const 
MyClass*>(b)->_x;
  }

  private:
  int _x;
};

int main() {
  MyClass x(1);
  MyClass y(2);

  cout << "x == y: " << (x == y) << endl;
  cout << "x > y: " << (x > y) << endl;
}
```

[ Full content available at: https://github.com/apache/trafficserver/pull/4262 ]
This message was relayed via gitbox.apache.org for [email protected]

Reply via email to