【发布时间】:2011-05-05 18:52:48
【问题描述】:
我想知道,是否有任何优雅的方法(如this)来检查模板参数是否派生自给定类? 一般来说:
template<class A, class B>
class MyClass
{
// shold give the compilation error if B is not derived from A
// but should work if B inherits from A as private
}
另一个question 中提供的解决方案仅在 B 作为公共继承自 A 时才有效:
class B: public A
但是,我宁愿没有这样的约束:
class A{};
class B : public A{};
class C : private A{};
class D;
MyClass<A,B> // works now
MyClass<A,C> // should be OK
MyClass<A,D> // only here I need a compile error
提前致谢!!!
【问题讨论】:
标签: c++ templates inheritance compiler-errors