Non saprei , bisogna che ti vada a rivedere il manuale per sicurezza.
A quanto ricordo io la sintassi corretta è
typedef tipo alias.
pertanto
typedef template alias
non va bene
se invece istanzi il template
typedef template<tutti i tipi necessari> alias
allora va di nuovo bene
perchè in tal caso template<tipi necessari> diventa un tipo
per tanto penso che una cosa del tipo
typedef Cella<double> tipoelem;
possa essere corretta
typedef Cella<T> tipoelem;
può essere corretta solo se T è un tipo valido
Ma posso sbagliare non ho i manuali, e nell'incertezza non uso costrutti su cui ho dubbi.