提取可变参数模板参数包,并将其用于具有类型特征元函数的另一个可变参数模板中?

问题描述

| 我想确定是否任何可变参数类模板是另一个类的基础。通常,我会使用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,template<typename...> class C,typename ...ArgsC>
struct is_variadic_base_of<A,B,C<ArgsC...>> 
: std::is_base_of<A<ArgsC...>,B>
{};
希望能帮助到你!     ,您已经快到了,但是可以尝试部分专业化:
template<
    template<class...> class A,class B,class C
>
struct is_variadic_base_of;

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