#include <tuple>
#include <utility>
#include <array>
#include <iostream>

template <typename... TT>
struct Foo {
	template <std::size_t... Indices>
	struct Baz {
	   std::tuple<std::array<TT,Indices>...> baz;
	};
	Baz<0,1,2> bar;
};

int main() {
	Foo<int,double,float> foo;
	std::cout << std::get<0>(foo.bar.baz).size() << std::endl;
	std::cout << std::get<1>(foo.bar.baz).size() << std::endl;
	std::cout << std::get<2>(foo.bar.baz).size() << std::endl;
	return 0;
}