c – 提取可变参数模板参数包并在类型特征元函数中的另一个可变参数模板中使用它?

我想确定任何可变参数类模板是否是另一个类的基础.通常我会使用std :: is_base_of,但我不认为我的用例适合,而且我不确定是否已经有std或boost中的东西来处理这个问题.我希望可变参数基类模板的参数包来自另一个可变参数类模板.这是一些示例代码,希望能够解释我想要做的事情:

用法:

is_variadic_base_of<
   VarClassTemplA
   , ClassDerivedFromA
   , VarClassTemplB //Has param pack I want to use with ClassA
>::value;

胆:

//test for variadic base of non-variadic
template <template<typename...> class A, typename B, typename... ArgsC>
struct is_variadic_base_of
: std::is_base_of<A<ArgsC...>, B>
{};

这可能吗?

最佳答案
template <template<typename...> class A, typename B, typename ArgsC>
struct is_variadic_base_of;

template <template<typename...> class A, typename B, 
          template<typename...> class C, typename ...ArgsC>
struct is_variadic_base_of<A, B, C<ArgsC...>> 
: std::is_base_of<A<ArgsC...>, B>
{};

希望能帮助到你!

转载注明原文:c – 提取可变参数模板参数包并在类型特征元函数中的另一个可变参数模板中使用它? - 代码日志