Modello C ++ typedef

Ho una lezione

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

Voglio creare un typedef che crea un Vector (vettore colonna) che è equivalente a una Matrix con le dimensioni N e 1. Qualcosa del genere:

 typedef Matrix Vector; 

Che produce errore di compilazione Quanto segue crea qualcosa di simile, ma non esattamente quello che voglio:

 template  class Vector: public Matrix { }; 

C’è una soluzione o una soluzione / soluzione non troppo costosa per questo?

C ++ 11 ha aggiunto dichiarazioni alias , che sono la generalizzazione di typedef , consentendo i template:

 template  using Vector = Matrix; 

Il tipo Vector<3> è equivalente a Matrix<3, 1> .


In C ++ 03, l’approssimazione più vicina era:

 template  struct Vector { typedef Matrix type; }; 

Qui, il tipo Vector<3>::type è equivalente a Matrix<3, 1> .