2011-05-05 54 views
4

我想知道,是否有任何优雅的方式(如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 

在此先感谢!

回答

1

从任何私有继承是一个实现细节。

在重构和代码分析期间,如果这样的检测对于外部功能是不可能的,我会更加高兴......

相关问题