#include <iostream>
struct A {
int a;
bool operator<(const int& inty) { return a < inty; }
bool operator>(const int& inty) { return a > inty; }
};
template <class A, class B>
auto operator<(const A& a, const B& b)
-> decltype(a > b)
{ std::cout << "derp!\n"; return a < b; }
int main(void) {
A a;
a.a = 1;
int b = 2;
if (a < b)
return 4;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEEgewogIGludCBhOyAKICBib29sIG9wZXJhdG9yPChjb25zdCBpbnQmIGludHkpIHsgcmV0dXJuIGEgPCBpbnR5OyB9CiAgYm9vbCBvcGVyYXRvcj4oY29uc3QgaW50JiBpbnR5KSB7IHJldHVybiBhID4gaW50eTsgfQp9OyAKCnRlbXBsYXRlIDxjbGFzcyBBLCBjbGFzcyBCPiAKYXV0byBvcGVyYXRvcjwoY29uc3QgQSYgYSwgY29uc3QgQiYgYikKICAgIC0+IGRlY2x0eXBlKGEgPiBiKQp7IHN0ZDo6Y291dCA8PCAiZGVycCFcbiI7IHJldHVybiBhIDwgYjsgfSAKCmludCBtYWluKHZvaWQpIHsgCiAgQSBhOwogIGEuYSA9IDE7CiAgaW50IGIgPSAyOwogIGlmIChhIDwgYikKICAgIHJldHVybiA0OwogIHJldHVybiAwOwp9IA==