namespace A{
class B;
}
A::B operator+(A::B a, A::B b);
namespace A{
class B {
private:
int i;
public:
B() : i(0) {}
B(int j) : i(j) {}
B friend ::operator+(B a, B b);
};
}
A::B operator+(A::B a, A::B b) {
return A::B(a.i + b.i);
}
int main() {
A::B a(1), b(2);
A::B c = a+b;
return 0;
}
bmFtZXNwYWNlIEF7CiAgICBjbGFzcyBCOwp9CgpBOjpCIG9wZXJhdG9yKyhBOjpCIGEsIEE6OkIgYik7CgpuYW1lc3BhY2UgQXsKICAgIGNsYXNzIEIgewogICAgcHJpdmF0ZToKICAgICAgICBpbnQgaTsKICAgIHB1YmxpYzoKICAgICAgICBCKCkgOiBpKDApIHt9CiAgICAgICAgQihpbnQgaikgOiBpKGopIHt9CgogICAgICAgIEIgZnJpZW5kIDo6b3BlcmF0b3IrKEIgYSwgQiBiKTsKICAgIH07Cn0KCkE6OkIgb3BlcmF0b3IrKEE6OkIgYSwgQTo6QiBiKSB7CiAgICByZXR1cm4gQTo6QihhLmkgKyBiLmkpOwp9CgppbnQgbWFpbigpIHsKICAgIEE6OkIgYSgxKSwgYigyKTsKICAgIEE6OkIgYyA9IGErYjsKICAgIHJldHVybiAwOwp9