a little help please - i am having a hard time why the compiler
Could not find a match for 'join<H1,H2,T2,T>(varnode<int,end>,varnode<int,end >)'
what am i doing wrong that it's not deducing to the case i am trying for &/or not matching the function signature?
thanks in advance.
Code:
template<typename H,typename T>class varnode
{
public:
varnode(tVar<H> h,T t):
head(h),
tail(t)
{
}
tVar<H> head;
T tail;
};
class end
{
};
//...
//recurse through head until terminus is reached
template<typename H1,typename T1,typename H2,typename T2,typename T> varnode<H1,T> join(varnode<H1,T1>head,varnode<H2,T2>tail)
{
return varnode<H1,T>(head.head,join(head.tail,tail));
}
//specialization case to terminate join recursion
template<typename H1,typename H2,typename T2,typename T> varnode<H1,T> join<H1,end,H2,T2,T>(varnode<H1,end>head,varnode<H2,T2>tail)
{
return varnode<H1,T>(head.head,tail);
}
//...
int i1;
int i2;
tVar<int>iv1("int1",i1);
tVar<int>iv2("int2",i2);
varnode<int,end>head(iv1,end());
varnode<int,end>tail(iv2,end());
varnode<int,varnode<int,end> >v(head.head,tail);
join(head,tail);