Przepraszamy za zawiłe pytanie, ale w zasadzie pomysł jest bardzo prosty. Mam zmiennej liczbie argumentów klasy formy:Czy jest możliwe zdefiniowanie szablonu klasy variasic C++ 11, którego liczność parametru variadic zależy od parametru szablonu integer?
template<class P1, class P2, class ... P3s>
class A
{
...
};
ja jak mieć Generator Klasy który przyjmuje szablonu całkowitą parametru N oraz instancję klasy z parametrów N P3S. Jak:
template<class P1, class P2, class P3, int N>
class GenA : /* somehow */ : public A<P1, P2, /* N times */ P3, P3, ...>
{
...
};
więc wykorzystanie byłoby:
// Generates A<Class1, Class2, Class3, Class3, Class3>
GenA<Class1, Class2, Class3, 3> a;
Próbowałem już to robić z kompilacji rekursji czasu i częściowej specjalizacji
template <class P1, class P2, int N, class P3>
class GenA : public GenA<P1, P2, N-1, P3, P3>
{
...
}
template <class P1, class P2, int N, class ... P3s>
class GenA<P1, P2, 0, P3s ...> : public A<P1, P2, P3s, ...>
{
...
}
jednak C++ 11 nie rozpoznaje drugi szablon jest specjalizacją pierwszego (ponieważ w rzeczywistości jest inny) i nigdy nie dostaje się do podstawowego przypadku rekursji (przestaje narzekać na zbyt dużą liczbę rekurencji). Jakieś pomysły?
Dzięki
Tunnuz
Wydaje się trudne bez nadmiernych specjalizacji szablonów. –
Po wybraniu jednej z odpowiedzi możesz podać punkt odniesienia dla rozwiązań? – pmr