#include <iostream>
class foo {
public:
foo() : i(1), j(2) {}
int i;
int j;
bool operator<(const foo& val) {
std::cout << "memba\n";
return i<val.i;
}
};
bool operator<(const foo& lhs, const foo& rhs) {
std::cout << "free\n";
return lhs.j < rhs.j;
}
int main()
{
foo f1, f2;
bool b1 = f1 < f2;
foo const f3;
bool b2 = f3 < f2;
return b1 + b2;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgZm9vIHsKcHVibGljOgogICBmb28oKSA6IGkoMSksIGooMikge30KCiAgIGludCBpOyAKICAgaW50IGo7IAogICBib29sIG9wZXJhdG9yPChjb25zdCBmb28mIHZhbCkgewogICAgIHN0ZDo6Y291dCA8PCAibWVtYmFcbiI7CiAgICAgcmV0dXJuIGk8dmFsLmk7CiAgIH0KfTsKCmJvb2wgb3BlcmF0b3I8KGNvbnN0IGZvbyYgbGhzLCBjb25zdCBmb28mIHJocykgewogICBzdGQ6OmNvdXQgPDwgImZyZWVcbiI7CiAgIHJldHVybiBsaHMuaiA8IHJocy5qOwp9CgppbnQgbWFpbigpCnsKICAgIGZvbyBmMSwgZjI7CiAgICBib29sIGIxID0gZjEgPCBmMjsKCiAgICBmb28gY29uc3QgZjM7CiAgICBib29sIGIyID0gZjMgPCBmMjsKCiAgICByZXR1cm4gYjEgKyBiMjsKfQo=