我想确保在以下模板化类 B 的定义中,类 A 派生自抽象类 C。我可以这样做吗?
template <class A>
class B {
// A must derive from C
...
};
我正在使用 C++11。
最佳答案
使用 std::is_base_of
:
template <class A>
class B {
static_assert(std::is_base_of<C, A>::value
, "A must derive from C");
//...
};
请注意 is_base_of<C, C>::value
是真的,所以你可能还想使用 std::is_same
确保A
实际上不是 C
本身:
static_assert(std::is_base_of<C, A>::value && !std::is_same<C, A>::value
, "A must derive from C");
关于c++ - 变量类派生自某个抽象类的类模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17978322/