[英]Extract variadic template parameter pack and use it in another variadic template in a type traits meta-function?
我想確定任何可變參數類模板是否是另一個類的基礎。 通常我會使用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>
{};
希望能幫助到你!
你幾乎就在那里,但嘗試部分專業化:
template<
template<class...> class A, class B, class C
>
struct is_variadic_base_of;
// partial spec
template<
template<class...> class A, class B,
template<class...> class C, class... ArgsC
>
struct is_variadic_base_of< A,B,C<ArgsC...> >
: std::is_base_of< A<ArgsC...>,B >
{};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.