hi,
i'm trying to understand A) policy classes and see if they meet my
needs. the book "C++ templates" has something similar called B)
"bridge pattern implemented with templates". would it be fair to
characterize them like this?
template<class Impl>//Impl has to have void op();
class A{//bridge pattern
Impl impl;
public:
void op(){impl.op();};
}
template<class Impl>
class B: public Impl{};//Impl used as a policy
what i'm really leading to is the issue of having more than one
template parameter, say
template<class Impl1,class Impl2class A;
template<class Impl1,class Impl2class B:public Impl1,Impl2{};
and either of Impl1 and Impl2 has a constructor which takes arbitrary
arguments.
i think that's not a problem for A (?):
A<Impl1,Impl2>::A(const Impl1& i1,const Impl2 i2):impl1(i1),impl2(i2)
{};
i guess i do the same for B ? or is this reasonable?
template<class In1, class Impl1,class In2, class Impl2//must satisfy
Impli::Impli(Ini), i=1,2
class B: public Impl1,public Impl2{};
B<In1,Impl1,In2,Impl2>::B:Impl1(In1),Impl2(In2){} ;
this means that for each Impl1 with constructor Impl1::Impl1(Args...),
i have 1) to create a class In1::In1(Args...) and overload as
Impl1::Impl1(In1). i haven't seen any examples like this so i'm
wondering if policies are suitable in this context. if they are, is
there a way that the host (B) can deduce In1, In2, rather than make
them explicit?