VC++6.0 函数模板,编译有一个异常!在哪》

VC++6.0 函数模板,编译有一个错误!在哪》?
#include <iostream>
using namespace std;
template <typename T>
T max(T a,T b,T c)
{
if(b>a) a=b;
if(c>a) a=c;
return a;
}
int main()
{
int i1=8,i2=5,i3=6,i;
double d1=56.9,d2=90.765,d3=43.1,d;
long g1=57843,g2=-456,g3=78123,g;
i=max(i1,i2,i3);
d=max(d1,d2,d3);
g=max(g1,g2,g3);
cout<<"i_max="<<i<<endl;
cout<<"f_max="<<f<<endl;
cout<<"g_max="<<g<<endl;
return 0;
}

编译时,总有一个错误,不知道在哪,到底在哪地?
------解决方案--------------------
因为你的命名比较随意,所以容易写错,把
cout<<"f_max="<<f<<endl;
这一行,换成:
cout<<"f_max="<<d<<endl;