想问一下,函数模板在定义的顺序是否对调用的时候有影响。
下面是我的一个例子,可能有些问题在第一个特化的模板,但是如下是能够正常运行的,但将两个特化顺序调换后就报错了。
想请教一下是什么问题,感谢~~
(A和B是我自己写的简单类)
template<typename T1> T1 fun(T1 t, B b)
{
return t + b.val;
}
template<> A fun(A a,B b)
{
A temp;
temp.val = a.val + b.val;
return temp;
};
A e;
e.val = 5;
B f ;
f.val = 6;
A ans = fun(e,f);
cout<<ans.val<<endl;
/*报错信息
template.cpp:41:14: error: invalid operands to binary expression ('A' and 'int')
return t + b.val;
~ ^ ~~~~~
template.cpp:59:9: note: in instantiation of function template specialization 'fun<A>' requested here
A ans = fun(e,f);
*/