Какие строки вызовут ошибку компиляции?

#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; 
} 
1
2
3
4
5
Скомпилируется без ошибок