簡體   English   中英

提取可變參數模板參數包並在類型特征元函數中的另一個可變參數模板中使用它?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM