![]() |
#2
rjsp2014-03-13 10:59
|
template<class T1, class T2>class Pair(T1, T2);
template<class T1>class Pair<int>(T1, int);
我有个小问题就是函数模板能否部分具体化:
template<class T1, class T2>void demo(T1 t1, T2 t2){cout<<"usual function template"<<endl;}
template<class T1>void demo<int> demo(T1 t1, int t2){cout<<"partial specialization template"<<endl;}
我在VS2010 里运行出现错误:
error C2768: “demo”: 非法使用显式模板参数
我想问问是我函数写错还是模板函数本身就无法部分具体化?

#include<iostream>
using std::cout;
using std::endl;
template <class T1, class T2, class T3>
void demo(T1 t1,T2 t2, T3 t3){
cout<<"usual template "endl;
}
template<class T1, class T2>void demo<T1,T2,int>( T1 t2, T2 t3,int i){
cout<<"partial specialization template "<<endl;
}
template <>
void demo<int,int,int>(int t1,int t2, int t3){
cout<<" specialization template: "<<t1<<": "<<t2<<": "<<t3<<endl;
}
int main(){
demo(1.1,2.2,3.3);
demo(1.1,2.1,3);
demo(1,2,3);
getchar();
return 0;
}