vetor n-dimensional

Digamos que eu queira declarar um vetor de um vetor de um vetor de ... (até n dimensões).

Igual a:

using namespace std;
// for n=2
vector<vector<int> > v2;
// for n=3
vector<vector<vector<int> > > v3;
// for n=4
vector<vector<vector<vector<int> > > > v3;

Existe uma maneira de fazer isso para um n arbitrário com metaprogramação de modelo?