函数模板的定义顺序的影响

想问一下,函数模板在定义的顺序是否对调用的时候有影响。

下面是我的一个例子,可能有些问题在第一个特化的模板,但是如下是能够正常运行的,但将两个特化顺序调换后就报错了。

想请教一下是什么问题,感谢~~

(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);
*/

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值