准则一:
两候选函数 一方其形参表各类型 与 调用实参列表各类型更匹配,则优先。
准则二:
在准则一无法分辨的情况下,一方函数模板实例而另一方为非模板函数,则取非模板函数。
准则三:
在前两个准则都无法分辨的情况下,取更为“特殊”的一方而淘汰另一方。
代码如下:
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; }
转载于:https://blog.51cto.com/3754839/1401711