Извлечь пакет параметров вариативного шаблона и использовать его в другом вариативном шаблоне в 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>
{};

Возможно ли это?

5
задан Brett Rossier 4 November 2011 в 20:42
поделиться