首先先贴上最后编译通过的解:
#include <iostream>
using namespace std;
template <class T1,class T2>
int add(T1 addend1,T2 addend2)
{
return (addend1 + addend2);
}
int main()
{
int num1,num2;
cin >> num1 >> num2;
cout << add(num1,num2) << endl;
return 0;
}
这很普通,不是吗?这是一种比较常见的解。(当然总比我后面的一种来得多)
可是,程序的最初一版是这样的:
#include <iostream>
using namespace std;
template <int T1,int T2>
int add(void)
{
return (T1 + T2);
}
int main()
{
int num1,num2;
cin >> num1 >> num2;
cout << add<num1,num2>() << endl;
return 0;
}
这里就犯了一个错误。在使用模板时,里面的参数必须是常量,或者类型。所以说这个程序就无法编译通过。