template<class T> T sqrt (T);
template<class T> complex<T> sqrt(complex<T>);
double sqrt(double);
void f(complex<double> z)
{
sqrt(z);
}
在这段代码中,如何sqrt<double>(complex<double>)
最终成为模板参数推导的候选者?作者说任何匹配的呼叫sqrt<T>(complex<T>)
也匹配sqrt<T>(<T>)
。如何?
代码来自Bjarne Stroustrup的 The C++ Programming Language。第 13.3.2 节