Ahhhh ok, pensavo tu volessi fare un'altra cosa...
Con i template non puoi usare il typedef, anche perchè non avrebbe senso!
piccolo esempio:
#include <iostream>
using namespace std;
template<typename type> struct S {
type data;
S* next;
};
int main()
{
S<int> *s = new S<int>();
s->data = 10;
s->next = ( S<int>* ) new S<char>();
s->next->data = 'a';
s->next->next = NULL;
cout << s->data << endl;
cout << s->next->data << endl;
return 0;
}
A partire da c++11 puoi usare i "type alias" , che sono ben spiegati qui