#include <iostream>
using namespace std;
struct test {
int x;
explicit test(int x = 0) : x(x) {}
test operator + (test second) {
return test(x + second.x);
}
test operator + (int second) {
return test(x + second);
}
};
int main() {
test a(20), b(22), c;
c = a + b; // call first overload
cout << c.x << endl;
c = a + 22;
cout << c.x << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IHRlc3QgewoJaW50IHg7CgkKCWV4cGxpY2l0IHRlc3QoaW50IHggPSAwKSA6IHgoeCkge30KCQoJdGVzdCBvcGVyYXRvciArICh0ZXN0IHNlY29uZCkgewoJCXJldHVybiB0ZXN0KHggKyBzZWNvbmQueCk7Cgl9CgkKCXRlc3Qgb3BlcmF0b3IgKyAoaW50IHNlY29uZCkgewoJCXJldHVybiB0ZXN0KHggKyBzZWNvbmQpOwoJfQp9OwoKaW50IG1haW4oKSB7Cgl0ZXN0IGEoMjApLCBiKDIyKSwgYzsKCQoJYyA9IGEgKyBiOyAvLyBjYWxsIGZpcnN0IG92ZXJsb2FkCgljb3V0IDw8IGMueCA8PCBlbmRsOwoJCgljID0gYSArIDIyOwoJY291dCA8PCBjLnggPDwgZW5kbDsKfQ==