gpt4 book ai didi

c++ - 如何仅当类型 T 派生自类型 X 时才允许模板类实例化?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:22:06 26 4
gpt4 key购买 nike

template <typename T>
class Test
{
};

class A : public X;

class B;

Test<A> a; // OK
Test<B> b; // NOT OK

我想完成这样的事情。

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

最佳答案

使用静态断言和适当的 type trait class :

#include <type_traits>

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

Live example .

关于c++ - 如何仅当类型 T 派生自类型 X 时才允许模板类实例化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22893714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com