#include <iostream>
using namespace std;
namespace A
{
void f(double x){cout<<"A::f(double)\n";}
void f(string s){cout<<"A::f(string)\n";}
namespace B
{
using A::f;
void f(int x){cout<<"B::f\n";}
void call()
{
f(10); // calls B::f, expected
f(10.5); // calls B::f, why??
string s="Hi";
f(s); // error, why??
}
}
}
int main() {
A::B::call();
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbmFtZXNwYWNlICBBCnsKICAgIHZvaWQgZihkb3VibGUgeCl7Y291dDw8IkE6OmYoZG91YmxlKVxuIjt9CgogICAgdm9pZCBmKHN0cmluZyBzKXtjb3V0PDwiQTo6ZihzdHJpbmcpXG4iO30KCiAgICBuYW1lc3BhY2UgQgogICAgewogICAgICAgIHVzaW5nIEE6OmY7CiAgICAgICAgdm9pZCBmKGludCB4KXtjb3V0PDwiQjo6ZlxuIjt9CgogICAgICAgIHZvaWQgY2FsbCgpCiAgICAgICAgewogICAgICAgICAgICBmKDEwKTsgIC8vIGNhbGxzIEI6OmYsIGV4cGVjdGVkCiAgICAgICAgICAgIGYoMTAuNSk7IC8vIGNhbGxzIEI6OmYsIHdoeT8/CiAgICAgICAgICAgIHN0cmluZyBzPSJIaSI7CiAgICAgICAgICAgIGYocyk7ICAvLyBlcnJvciwgd2h5Pz8KICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgQTo6Qjo6Y2FsbCgpOwoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJcmV0dXJuIDA7Cn0=