#include <iostream>
using namespace std;
template <typename x> x functionA (x, x);
int main ()
{
functionA <double, double, double> (1, 1) << "\n";
}
template <typename x> x functionA (x arg1, x arg2)
{
return arg1 + arg2;
}
此代码导致:
error: no matching function for call to ‘functionA(int, int)’
可能是什么原因?
最佳答案
函数模板仅具有一个模板参数,并且您要向其传递3
模板参数:
functionA <double, double, double> (1, 1) << "\n";
为什么使用
3
模板参数?写吧:
functionA <double> (1, 1);
或者,您可以简单地让编译器推导template参数,如下所示:
functionA(1.0, 1.0); //template argument deduced as double!
functionA(1, 1); //template argument deduced as int!