#include <iostream>
using namespace std;
class A
{
int x;
public:
A& operator=(const A& param)
{
cout << "operator=\n";
x = param.x;
return *this;
}
operator int&()
{
cout << "operator()\n";
return x;
}
A(const int& param)
{
x = param;
}
void putX()
{
cout << "x = " << x << endl;
}
};
int main()
{
A a(999);
a = a + 33;
a.putX();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQQp7CiAgICBpbnQgeDsKcHVibGljOgogICAgQSYgb3BlcmF0b3I9KGNvbnN0IEEmIHBhcmFtKQogICAgewogICAgICAgIGNvdXQgPDwgIm9wZXJhdG9yPVxuIjsKICAgICAgICB4ID0gcGFyYW0ueDsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CiAgICBvcGVyYXRvciBpbnQmKCkKICAgIHsKICAgICAgICBjb3V0IDw8ICJvcGVyYXRvcigpXG4iOwogICAgICAgIHJldHVybiB4OwogICAgfQogICAgQShjb25zdCBpbnQmIHBhcmFtKQogICAgewogICAgICAgIHggPSBwYXJhbTsKICAgIH0KICAgIHZvaWQgcHV0WCgpCiAgICB7CiAgICAgICAgY291dCA8PCAieCA9ICIgPDwgeCA8PCBlbmRsOwogICAgfQp9OwppbnQgbWFpbigpCnsKICAgIEEgYSg5OTkpOwogICAgYSA9IGEgKyAzMzsKICAgIGEucHV0WCgpOwogICAgcmV0dXJuIDA7Cn0K