准则一:
两候选函数 一方其形参表各类型 与 调用实参列表各类型更匹配,则优先。
准则二:
在准则一无法分辨的情况下,一方函数模板实例而另一方为非模板函数,则取非模板函数。
准则三:
在前两个准则都无法分辨的情况下,取更为“特殊”的一方而淘汰另一方。
代码如下:
template<typename T>
void func(T v)
{
cout<<"template<typename T>"<<v<<endl;
}
/*
template< >
void func(float v)
{
cout<<"template<>"<<v<<endl;
}
*/
void func(float v)
{
cout<<"void func float"<<v<<endl;
}
void func(int v)
{
cout<<"void func int"<<v<<endl;
}
int main(int argc, char const *argv[])
{
func(1);
func(1.0);
func(1.f);
func<>(1.f);
system("pause");
return 0;
}