class Base
{
...
};
class Derived1 : public Base
{
...
};
class Derived2 : public Base
{
...
};
class Unrelated
{
...
};
我希望有一个类模板ClassTemplate,它只接受类Derived1和Derived2作为参数,但不是Unrelated,所以我可以这样做:
ClassTemplate<Derived1> object1;
ClassTemplate<Derived2> object2;
但我不应该这样做:
ClassTemplate<Unrelated> object3;
有可能吗?
答案 0 :(得分:5)
使用Boost.TypeTraits中的boost::is_base_of
:
template<class T> class ClassTemplate {
BOOST_STATIC_ASSERT((boost::is_base_of<Base, T>::value));
};
答案 1 :(得分:1)
将boost static assert与type traits结合使用