Nel this question l'OP ha richiesto una soluzione al modello typedef che non è possibile in C++. Il PO ha inoltre presentato una soluzione di se stessi, ma non gli piaceva:Perché il modello digita un problema in C++ (non C++ 11)
template<size_t N, size_t M>
class Matrix {
// ....
};
// Problem - will not compile
typedef Matrix<N,1> Vector<N>;
// Solution
template <int N>
class Vector: public Matrix<N,1>
{ };
La mia domanda è, quale vantaggio fa il Helper::type
solution ci danno sopra la soluzione del PO (supponendo che queste classi non sono mai destinati ad essere utilizzati da un puntatore base o new
'd come tale)? Una classe vuota non dovrebbe portare a spese generali nel rilascio (o lo fa?). L'unico svantaggio che posso vedere è che nelle build di debug dovrai espandere la classe base durante il debug.
EDIT: Oltre alla risposta selezionata, vedere la risposta di Dani che ha suggerito che la versione ereditata richiederebbe la definizione dei costruttori, il che costituisce un ulteriore inconveniente.
Se nient'altro, 'Helper :: type' è in realtà il tipo giusto. È passato un po 'di tempo dall'ultima volta che ho approfondito queste cose, ma l'IIRC presenta alcuni problemi delicati con la deduzione del tipo e simili. – Hurkyl