#include <iostream>
struct A { void bar() { std::cout << "Expected outcome :)"; } };
struct B { void bar() { std::cout << "Unexpected outcome :("; } };
A foo(int) { return A(); }
B foo(char) { return B(); } // someone created this without telling me
int main()
{
auto x = foo('0');
x.bar();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKICAgIHN0cnVjdCBBIHsgdm9pZCBiYXIoKSB7IHN0ZDo6Y291dCA8PCAiRXhwZWN0ZWQgb3V0Y29tZSA6KSI7IH0gfTsKICAgIHN0cnVjdCBCIHsgdm9pZCBiYXIoKSB7IHN0ZDo6Y291dCA8PCAiVW5leHBlY3RlZCBvdXRjb21lIDooIjsgfSB9OwogICAgCiAgICBBIGZvbyhpbnQpICAgICB7IHJldHVybiBBKCk7IH0KICAgIEIgZm9vKGNoYXIpICB7IHJldHVybiBCKCk7IH0gIC8vIHNvbWVvbmUgY3JlYXRlZCB0aGlzIHdpdGhvdXQgdGVsbGluZyBtZQogICAgCiAgICBpbnQgbWFpbigpCiAgICB7CiAgICAgICAgYXV0byB4ID0gZm9vKCcwJyk7CiAgICAgICAgeC5iYXIoKTsKICAgIH0=