Base 型のポインターと他のすべてのポインター型に対して異なる動作をさせるために、テンプレート クラスを特殊化したいと考えています。enable if を使ってみました。しかし、それは私が望むようには機能していません。どうすればいいのか誰か教えてください。私が試したコード:
class Base
{
};
class Derived:public Base
{
};
class Non_base
{
};
template<class T,class Enable=void> class Vector
{
public:
Vector()
{
cout<<"Constructor of Vector "<<endl;
}
};
template<class T> class Vector<T*>
{
public:
Vector()
{
cout<<"Constructor of Vector<T *> "<<endl;
}
};
template<> class Vector<Base*>
{
public:
Vector()
{
cout<<"Constructor of Vector<Base*> fully specialized"<<endl;
}
};
//template<class T> class Vector<T *>:public Vector<Base *>
//{
//public:
// Vector()
// {
// cout<<"Constructor of Vector<Base*> partially specilized"<<endl;
// }
//};
template<class T> class Vector<T*,typename enable_if<is_base_of<Base,T>::value>::type>
{
Vector()
{
cout<<"Constructor of Vector<Base*> partially specilized"<<endl;
}
};