Vector genérico de vectores en C ++

¿Hay una buena manera en C ++ para implementar (o falso) un tipo para un vector genérico de vectores?

Ignora el problema de cuándo un vector de vectores es una buena idea (a menos que haya algo equivalente que siempre sea mejor). Suponga que modela con precisión el problema y que una matriz no modela con precisión el problema. Suponga también que las funciones con plantilla que toman estas cosas como parámetros necesitan manipular la estructura (por ejemplo, llamar a push_back), por lo que no pueden simplemente tomar un tipo genérico compatible[][].

Lo que quiero hacer es:

template<typename T>
typedef vector< vector<T> > vecvec;

vecvec<int> intSequences;
vecvec<string> stringSequences;

pero, por supuesto, eso no es posible, ya que typedef no se puede crear con plantilla.

#define vecvec(T) vector< vector<T> >

está cerca y ahorraría duplicar el tipo en todas las funciones con plantilla que funcionan en vecvecs, pero no sería popular entre la mayoría de los programadores de C ++.