假设我有类(class):
class Base{};
class A: public Base{
int i;
};
class B:public Base{
bool b;
};
现在我想定义一个模板类:
template < typename T1, typename T2 >
class BasePair{
T1 first;
T2 second;
};
但我想将其定义为只有 Base 类的后代可以用作模板参数。
我该怎么做?
最佳答案
C++11 引入 <type_traits>
template <typename T1, typename T2>
class BasePair{
static_assert(std::is_base_of<Base, T1>::value, "T1 must derive from Base");
static_assert(std::is_base_of<Base, T2>::value, "T2 must derive from Base");
T1 first;
T2 second;
};
关于特定基类的 C++ 类模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2012950/