#include <iostream>
template<class T1, class T2>
void foo(T1 a, T1 b)
{
std::cout << "same\n";
}
template<class T1, class T2>
void foo(T1 a, T2 b)
{
std::cout << "different\n";
}
int main()
{
foo(1,1);
//foo(1,2.3);
foo<int,int>(1, 1);
//foo<int,int>(1, 2.3);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPgp2b2lkIGZvbyhUMSBhLCBUMSBiKQp7CglzdGQ6OmNvdXQgPDwgInNhbWVcbiI7Cn0KCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4Kdm9pZCBmb28oVDEgYSwgVDIgYikKewoJc3RkOjpjb3V0IDw8ICJkaWZmZXJlbnRcbiI7Cn0KCmludCBtYWluKCkKewoJZm9vKDEsMSk7CgkvL2ZvbygxLDIuMyk7Cglmb288aW50LGludD4oMSwgMSk7CgkvL2ZvbzxpbnQsaW50PigxLCAyLjMpOwoKfQ==