данной VARIADIC шаблоны структуры данных, как показано ниже (код из Eli Bendersky's website):VARIADIC шаблоны VARIADIC шаблонов класса в C++
template <class... Ts> struct tuple {};
template <class T, class... Ts>
struct tuple<T, Ts...> : tuple<Ts...> {
tuple(T t, Ts... ts) : tuple<Ts...>(ts...), tail(t) {}
T tail;
};
мы можем определить что-то вроде
tuple<double, uint64_t, const char*> t1(12.2, 42, "big");
Тогда как определить структура шаблона, которая могла бы принять следующую подпись?
Foo<tuple<int,double>, tuple<double,int,long> ..., tuple<std::string>> foo;
Я думаю, что это будет так:
template<tuple<class... Ts>... Tuples>
struct VariadicTuples {};
, но он не может скомпилировать. заключается в том, что, поскольку класс в шаблонах Variadic не может быть шаблонами Variadic? Если да, то как это сделать?
В вашем примере с 'Foo' вы не передаете сам шаблон, а инициализируете его. 'template struct Foo;' достаточно для компиляции. –
Quentin