Is it possible? Yes, you can do arbitrarily complex calculations at compile-time, so there certainly is a solution.
The most straightforward way is to just use template recursion, like so:
template <class T, size_t dim, size_t len>
struct A_helper {
using type = typename A_helper<T, dim - 1, len>::type[len];
};
template <class T, size_t len>
struct A_helper<T, 0, len> {
using type = T;
};
template <class T, size_t dim, size_t len>
using A = typename A_helper<T, dim, len>::type;
See it on Coliru: http://coliru.stacked-crooked.com/a/bfc9052b30bce553