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.