如果类型T派生自类型X,如何允许模板类实例化?

NFR*_*RCR 1 c++

template <typename T>
class Test
{
};

class A : public X;

class B;

Test<A> a; // OK
Test<B> b; // NOT OK
Run Code Online (Sandbox Code Playgroud)

我想完成这样的事情.

也许这可以更轻松地完成.基本上,我需要的是:模板类T应该能够在类型为T的对象中锁定std :: mutex成员m_mutex(如果存在).

jro*_*rok 7

使用静态断言和相应的类型特征类:

#include <type_traits>

template <typename T>
class Test
{
    static_assert( std::is_base_of<X,T>::value, "T doesn't derive from X!"); 
};
Run Code Online (Sandbox Code Playgroud)

实例.