#include <iostream>
class Foo
{
public:
template <class T>
void bar(T v)
{
do_something(v);
}
};
void do_something(std::string s)
{
std::cout << "do_something(std::string)" << std::endl;
}
void do_something(int x)
{
std::cout << "do_something(int)" << std::endl;
}
int main()
{
Foo f;
f.bar("abc");
f.bar(123);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgRm9vCnsKICAgIHB1YmxpYzoKCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KICAgIHZvaWQgYmFyKFQgdikKICAgIHsKICAgICAgICBkb19zb21ldGhpbmcodik7CiAgICB9Cn07Cgp2b2lkIGRvX3NvbWV0aGluZyhzdGQ6OnN0cmluZyBzKQp7CiAgICBzdGQ6OmNvdXQgPDwgImRvX3NvbWV0aGluZyhzdGQ6OnN0cmluZykiIDw8IHN0ZDo6ZW5kbDsKfQoKdm9pZCBkb19zb21ldGhpbmcoaW50IHgpCnsKICAgIHN0ZDo6Y291dCA8PCAiZG9fc29tZXRoaW5nKGludCkiIDw8IHN0ZDo6ZW5kbDsKfQoKaW50IG1haW4oKQp7CiAgICBGb28gZjsKICAgIGYuYmFyKCJhYmMiKTsKICAgIGYuYmFyKDEyMyk7Cn0=