#include <iostream>
template <typename T1, typename T2> void f(T1 x, T2 y) {
std::cout << x << " " << y << std::endl;
}
class A {
public:
A(int x) : val(x) { }
private:
int val;
};
int main() {
f<char>('1', "2"); // 1
f<string>('1', "2"); // 2
f('1', "2"); // 3
f<A, int> (1, 2); // 4
f(1.0, 2); // 5
return 0;
}