调用的规则:
1.普通函数和模板函数都能符合调用规则下,优先调用普通函数
2.如果模板函数更符合调用规则,则调用模板函数
3.通过空模板参数列表 强制调用 模板函数
4.函数模板也可以发生函数重载
#include<iostream>
#include<cstdio>
using namespace std;
void func(int a, int b){
cout<<a<<" "<<b<<"调用普通函数"<<endl;
}
template<typename T>
void func(T a, T b){
cout<<a<<" "<<b<<"调用模板函数"<<endl;
}
template<typename T>
void func(T a, T b, T c){
cout<<a<<" "<<b<<" "<<c<<"调用模板函数重载"<<endl;
}
int main(){
int a = 10;
int b = 20;
int c = 30;
char d = 'd';
char e = 'e';
func(a,b); // 普通函数和模板函数都能符合调用规则下,优先调用普通函数
func(d,e); // 如果模板函数更符合调用规则,则调用模板函数
func<>(a,b); // 通过空模板参数列表 强制调用 模板函数
func(a,b,c); // 函数模板也可以发生函数重载
return 0;
}