如何解决提取可变参数模板参数包,并将其用于具有类型特征元函数的另一个可变参数模板中?
| 我想确定是否任何可变参数类模板是另一个类的基础。通常,我会使用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 >
{};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。