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]