如何确保类模板参数派生自特定类Foo?

时间:2010-06-19 12:37:29

标签: c++ templates

  

可能重复:
  C++ class template of specific baseclass

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;

有可能吗?

2 个答案:

答案 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结合使用