class Foo
{
private:
struct Bar
{
int a;
char b;
Bar& operator+=(const Bar& rhs)
{
a += rhs.a;
return *this;
}
};
friend Bar operator+(const Bar& lhs, const Bar& rhs)
{
Bar ret = lhs;
ret += rhs;
return ret;
}
public:
void foo() const
{
Bar b0, b1;
Bar b2 = b0 + b1;
}
};
int main()
{
Foo f;
f.foo();
}
Y2xhc3MgRm9vCnsKcHJpdmF0ZToKICAgIHN0cnVjdCBCYXIKICAgIHsKICAgICAgICBpbnQgYTsKICAgICAgICBjaGFyIGI7CiAKICAgICAgICBCYXImIG9wZXJhdG9yKz0oY29uc3QgQmFyJiByaHMpCiAgICAgICAgewogICAgICAgICAgICBhICs9IHJocy5hOwogICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgfQogICAgfTsKIAogIGZyaWVuZCBCYXIgb3BlcmF0b3IrKGNvbnN0IEJhciYgbGhzLCBjb25zdCBCYXImIHJocykKICB7CiAgCUJhciByZXQgPSBsaHM7CiAgICByZXQgKz0gcmhzOwogICAgcmV0dXJuIHJldDsKICB9CiAgCiAgcHVibGljOgogIHZvaWQgZm9vKCkgY29uc3QKICB7CiAgICBCYXIgYjAsIGIxOwogICAgQmFyIGIyID0gYjAgKyBiMTsKICB9Cn07CiAKCmludCBtYWluKCkgCnsKCUZvbyBmOwoJZi5mb28oKTsKfQ==