以下是“c++ 编程语言”中的几行
template<class T > T sqrt(T );
template<class T > complex<T> sqrt(complex<T>);
double sqrt(double);
void f(complex<double> z )
{
s q r t (2 ); // sqrt<int>(int)
sqrt(2.0) ; // sqrt(double)
sqrt(z) ; // sqrt<double>(complex<double>)
}
我不明白为什么 sqrt(z) ;电话sqrt<double>(complex<double>)
可以任何机构请解释。
作者说,
T sqrt<complex<T>>
比更专业,T sqrt <T>
但有一个单独的声明template<class T > complex<T> sqrt(complex<T>);
为什么不使用它?