В каких строках допущена ошибка?

template <class T2> 
void sum(T2 op1) 
{ 
     cout << "###"; 
} 
 
int main() { 
     sum<double>(1);  //1 
     void(*pt)(int) = sum;  //2 
     void(*pt1)(int) = sum<int>;  //3 
     void(*pt2)<int>(int) = & sum;  //4 
     void(*pt3)(int) = & sum;  //5 
    return 0; 
} 
//1
//2
//3
//4
//5