#include<iostream> #include<string> using namespace std; template <typename T1,typename T2,typename T3> T1 sum(T2 a,T3 b) { T1 c=a+b; return c; } template <typename T> int compare(const T&,const T&) { return 0; } int (*pf)(const string &,const string &)=compare<string>; void func(int compare<string>);//指向不同类型的指针函数 void func(int compare<int>);//指针函数 int main() { cout<<"hello"<<endl; long val3=sum<long,int,int>(3,3);//实参表的顺序与形参表对应;返回类型不能自行推断出,其他形参可以由编译器自行推断 cout<<val3<<endl; return 0; } 使用函数模板对函数指针进行初始化或赋值,编译器使用指针的类型实例化模板版本。