更具体地说,假设我有一个带有参数 A
和 B
的类模板,并且我希望有一个编译器错误(当模板被实例化时)如果 B 不是从 A 派生的。
template<class A, class B>
class Foo
{
// static_assert(B is derived from A)
};
最佳答案
这已经被问过很多次了,但是很简单我会再次发布解决方案:
~Foo()
{
A* p = (B*)0; // B is required to be a subtype of A
}
关于c++ - 如何测试B类是否派生自A类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4532281/