Plantilla C ++ typedef

Tengo una clase

template class Matrix { // .... }; 

Quiero hacer un typedef que cree un Vector (columna vector) que sea equivalente a una Matrix con tamaños N y 1. Algo así:

 typedef Matrix Vector; 

Lo cual produce un error de comstackción. Lo siguiente crea algo similar, pero no es exactamente lo que quiero:

 template  class Vector: public Matrix { }; 

¿Existe una solución o una solución no demasiado costosa / mejores prácticas para ello?

C ++ 11 agregó declaraciones de alias , que son generalización de typedef , permitiendo plantillas:

 template  using Vector = Matrix; 

El tipo Vector<3> es equivalente a Matrix<3, 1> .


En C ++ 03, la aproximación más aproximada fue:

 template  struct Vector { typedef Matrix type; }; 

Aquí, el tipo Vector<3>::type es equivalente a Matrix<3, 1> .