如何编写一个模板,它将作为参数类,其构造函数具有互斥签名?
class A
{
A(){};
public:
int a;
A(int i) : a(i) {};
};
class B{
B(){};
public:
int a,b;
B(int i,int j) : a(i), b(j) {};
};
template <class T> class C {
public:
T* _t;
C(int i[])
{ //???
_t=new T(i[0]); //if T has T(int) signature
_t=new T(i[0],i[1]); //if T has T(int,int) signature
}
~C() {delete _t;}
};
int main()
{
int Ai[]={1,2};
C<A> _c(Ai); // template should work instantiated with A and B
C<B> _c(Ai); //
return 0;
}
A
和的签名B
是固定的(例如不能更改为 int[])。上下文:我正在考虑一个包装器,它将(专用)容器类型作为模板参数,例如T=vector<int>
,或T=map<int,int>
,当需要调用构造函数时会出现问题。