#include <iostream>
class X {
public:
X &operator+=(int v) {
value += v;
return *this;
}
int value = 0;
};
// Uwaga: referencja w argumencie `x` ponizej nie ma zadnego sensu.
// Wewnatrz funkcji i tak trzeba by wykonac kopie.
X operator+(X x, int v) {
return (x += v);
}
int main() {
X x;
X y = x + 10;
std::cout << y.value;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgWCB7CnB1YmxpYzoKICBYICZvcGVyYXRvcis9KGludCB2KSB7CiAgICB2YWx1ZSArPSB2OwogICAgcmV0dXJuICp0aGlzOwogIH0KICAKICBpbnQgdmFsdWUgPSAwOwp9OwoKLy8gVXdhZ2E6IHJlZmVyZW5jamEgdyBhcmd1bWVuY2llIGB4YCBwb25pemVqIG5pZSBtYSB6YWRuZWdvIHNlbnN1LgovLyBXZXduYXRyeiBmdW5rY2ppIGkgdGFrIHRyemViYSBieSB3eWtvbmFjIGtvcGllLgpYIG9wZXJhdG9yKyhYIHgsIGludCB2KSB7CiAgcmV0dXJuICh4ICs9IHYpOwp9CgppbnQgbWFpbigpIHsKICBYIHg7CiAgCiAgWCB5ID0geCArIDEwOwogIAogIHN0ZDo6Y291dCA8PCB5LnZhbHVlOwogIHJldHVybiAwOwp9