struct A {
int a;
};
bool operator>(const A& a, const int& inty) { return a.a > inty; }
template <class A, class B> auto operator<(const A& a, const B& b) -> decltype(operator>(a,b)) { return a < b; }
int main(void) {
A a; a.a = 1; int b = 2;
//operator<(a,b);
a < b;
return 0;
}
c3RydWN0IEEgewoJaW50IGE7Cn07Cgpib29sIG9wZXJhdG9yPihjb25zdCBBJiBhLCBjb25zdCBpbnQmIGludHkpIHsgcmV0dXJuIGEuYSA+IGludHk7IH0KCnRlbXBsYXRlIDxjbGFzcyBBLCBjbGFzcyBCPiBhdXRvIG9wZXJhdG9yPChjb25zdCBBJiBhLCBjb25zdCBCJiBiKSAtPiBkZWNsdHlwZShvcGVyYXRvcj4oYSxiKSkgeyByZXR1cm4gYSA8IGI7IH0KCmludCBtYWluKHZvaWQpIHsKCUEgYTsgYS5hID0gMTsgaW50IGIgPSAyOwoJLy9vcGVyYXRvcjwoYSxiKTsKCWEgPCBiOwoJcmV0dXJuIDA7Cn0=