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