我想知道,是否有任何优雅的方式(如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
}
当B从A继承公众在另一个question提供的解决方案仅适用:
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
在此先感谢!