class A { public: int x; A(int xx) { x = xx; } operator int() {return x;}};
class B { public: int x; B(int xx) { x = xx; } operator int() {return x;}};
A f(A a) { return a+a; }; // this is ugly and I'd want to be able to use: return a+a
int main()
{
A a = 5;
//B b = 5;
f(a); // This will work...
//f(b); // This won't compile...
}
Y2xhc3MgQSB7IHB1YmxpYzogaW50IHg7IEEoaW50IHh4KSB7IHggPSB4eDsgfSBvcGVyYXRvciBpbnQoKSB7cmV0dXJuIHg7fX07CmNsYXNzIEIgeyBwdWJsaWM6IGludCB4OyBCKGludCB4eCkgeyB4ID0geHg7IH0gb3BlcmF0b3IgaW50KCkge3JldHVybiB4O319OwoKQSBmKEEgYSkgeyByZXR1cm4gYSthOyB9OyAvLyB0aGlzIGlzIHVnbHkgYW5kIEknZCB3YW50IHRvIGJlIGFibGUgdG8gdXNlOiByZXR1cm4gYSthCgppbnQgbWFpbigpCnsKICBBIGEgPSA1OwogIC8vQiBiID0gNTsKICBmKGEpOyAgICAgLy8gVGhpcyB3aWxsIHdvcmsuLi4KICAvL2YoYik7ICAgICAvLyBUaGlzIHdvbid0IGNvbXBpbGUuLi4KfQ==