Elegantly define multi-dimensional array in modern C++
Refer to Multi-dimensional arrays in C++11
template <class T, std::size_t I, std::size_t... J>struct MultiDimArray { using Nested = typename MultiDimArray<T, J...>::type; // typedef typename MultiDimArray<T, J...>::type Nested; using type = std::array<Nested, I>; // typedef std::array<Nested, I> type;};template <class T, std::size_t I>struct MultiDimArray<T, I> { using type = std::array<T, I>; // typedef std::array<T, I> type;};MultiDimArray<float, 3, 4, 5, 6, 7>::type floats;
MultiDimArray
is a pair of meta-functions to compute nested type for multi-dimensional std::array
. The most general MultiDimArray
is a variadic template of unsigned integers to pass an arbitrary number of dimensions. The terminating MultiDimArray
specialization defines the simplest case of single dimensional std::array
.