#include <string>
#include <iostream>
using namespace std;
template<typename Type>
void func(Type, Type)
{
cout << "same" << endl;
}
template<typename TypeA, typename TypeO>
void func(TypeA, TypeO)
{
cout << "different" << endl;
}
int main()
{
func(5, 3); // same
func(5, 3.0); // different
func(string("hello"), "hello"); // different
func(5.0, 3.0); // same
return 0;
}
ICAgICNpbmNsdWRlIDxzdHJpbmc+CiAgICAjaW5jbHVkZSA8aW9zdHJlYW0+CiAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CiAgICB2b2lkIGZ1bmMoVHlwZSwgVHlwZSkKICAgIHsKICAgICAgICBjb3V0IDw8ICJzYW1lIiA8PCBlbmRsOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGVBLCB0eXBlbmFtZSBUeXBlTz4KICAgIHZvaWQgZnVuYyhUeXBlQSwgVHlwZU8pCiAgICB7CiAgICAgICAgY291dCA8PCAiZGlmZmVyZW50IiA8PCBlbmRsOwogICAgfQoKICAgIGludCBtYWluKCkKICAgIHsKICAgICAgICBmdW5jKDUsIDMpOyAgICAgICAgICAgICAgICAgICAgIC8vIHNhbWUKICAgICAgICBmdW5jKDUsIDMuMCk7ICAgICAgICAgICAgICAgICAgIC8vIGRpZmZlcmVudAogICAgICAgIGZ1bmMoc3RyaW5nKCJoZWxsbyIpLCAiaGVsbG8iKTsgLy8gZGlmZmVyZW50CiAgICAgICAgZnVuYyg1LjAsIDMuMCk7ICAgICAgICAgICAgICAgICAvLyBzYW1lCiAgICAgICAgcmV0dXJuIDA7CiAgICB9