Modelo de C ++ typedef

Eu tenho uma aula

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

Eu quero fazer um typedef que cria um Vector (vetor de coluna) que é equivalente a uma Matrix com tamanhos N e 1. Algo como isso:

 typedef Matrix Vector; 

Que produz erro de compilation. O seguinte cria algo semelhante, mas não exatamente o que eu quero:

 template  class Vector: public Matrix { }; 

Existe uma solução ou uma solução alternativa não muito cara / melhor prática para ela?

C ++ 11 adicionou declarações de alias , que são generalizações de typedef , permitindo modelos:

 template  using Vector = Matrix; 

O tipo Vector<3> é equivalente a Matrix<3, 1> .


Em C ++ 03, a aproximação mais próxima foi:

 template  struct Vector { typedef Matrix type; }; 

Aqui, o tipo Vector<3>::type é equivalente a Matrix<3, 1> .