可能重复:
特定基类的C++类模板
class Base
{
...
};
class Derived1 : public Base
{
...
};
class Derived2 : public Base
{
...
};
class Unrelated
{
...
};
Run Code Online (Sandbox Code Playgroud)
我想要一个类模板ClassTemplate,它只接受类Derived1和Derived2作为参数,但不是Unrelated,所以我可以这样做:
ClassTemplate<Derived1> object1;
ClassTemplate<Derived2> object2;
Run Code Online (Sandbox Code Playgroud)
但我不应该这样做:
ClassTemplate<Unrelated> object3;
Run Code Online (Sandbox Code Playgroud)
有可能吗?
使用boost::is_base_of
Boost.TypeTraits:
template<class T> class ClassTemplate {
BOOST_STATIC_ASSERT((boost::is_base_of<Base, T>::value));
};
Run Code Online (Sandbox Code Playgroud)