普通函数和函数模板的调用规则
- 如果函数模板和普通函数都可以实现,优先调用普通函数
- 可以通过空模板参数列表来强制调用函数模板
- 函数模板也可以发生重载
- 如果函数模板可以产生更好的匹配,优先调用函数模板
e.g:
void myFun(int a)
{
cout << "调用普通函数 " << endl;
}
template <class T>
void myFun(T a)
{
cout << "调用模板函数 " << endl;
}
template <class T>
void myFun(T a,T b)
{
cout << "调用重载模板函数 " << endl;
}
调用:
myFun(1); // 调用普通函数
myFun<>(1); // 调用模板函数
char c = 'c';
myFun(c); // 调用模板函数, 不需要隐式类型转换,函数模板是更好的匹配