Возможно ли создать пакет шаблонов шаблонов?C++ 11 Сгенерировать аргументы шаблона
У меня есть следующий код работы:
zip<0,1,2>.expand(c);
Моя цель состоит в том, чтобы сформировать список 0,1,2 во время компиляции, как она будет использоваться с переменным числом шаблонов, например:
zip<make_sequence<3>>.expand(c);
Мне нужно, чтобы это было сгенерировано во время компиляции, так как расширение запускает некоторые шаблонные функции, которые оптимизируются в зависимости от типа слоя/фильтра, поэтому я могу запустить другой код. Идея заключается в том, чтобы определить список слоев или фильтров, сгенерированных во время компиляции, и удалить некоторые ifs (и другие ситуации), поскольку это будет использоваться в среде HPC (и находится внутри критического пути).
Это внутри этого класса (упрощенный вариант):
template<class... Layer>
class TRAV{
template <int...CS> struct zip{
static void expand(int c){
constexpr int b = sizeof...(Layers);
expand2((TRAV::path<CS,b,typename Layers::MONAD_TYPE>(c),0)...);
}
template<typename...IS>
static void expand2(IS&&...) {
}
};
void call(int c){
zip<0,1,2>.expand(c);
}
};
Я также попытался решения, предложенные на сайте:
Implementation C++14 make_integer_sequence
How do I generate a variadic parameter pack?
Но ни один из них не работает для меня. Я получаю эту ошибку:
error: type/value mismatch at argument 1 in template parameter list for >‘template
error: expected a constant of type ‘int’, got ‘make_integer_sequence’
Любое предложение? спасибо!
Это сработало! Большое спасибо – Alberich2k5