我想知道,是否有任何優雅的方式(如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
在此先感謝!