c++函数模板的一个简单问题

下面有一处报错请问为什么啊

#include
using namespace std;

template

T max(T a,T b)
{
return a>b?a:b;
}

int max()
{

int a=1,b=2,c;
c=max(a,b);                //此处max报错
cout<<c<<endl;


getchar();
return 0;

}

两个错,一个是main函数写成max了
另一个是系统库函数存在叫max的函数,你再定义就混淆了,你的函数可以换成max1

 #include<iostream>
using namespace std;

template <typename T>
T max1(T a,T b)
{
    return a>b?a:b;
}


int main()
{

    int a=1,b=2,c;
    c=max1(a,b);                //此处max报错
    cout<<c<<endl;


    getchar();
    return 0;
}

编译通过