"Type" of a function template?
A function like T id(T x){return x;} is actually a (parametrically) polymorphic function, and there are many frameworks that allow assigning a type to such beasts.

One of the most popular frameworks to talk about such things is system F, which allows expressing the type of the above statement as: $$\forall T:*.\ T\rightarrow T$$

This requires the ability to quantify over types to form other types, which is the main feature of system F. Note that because id is a value, it's type has itself a kind, that is
$$\forall T:*.\ T\rightarrow T\ \ :\ \ * $$

in keeping with the analogy with List, whose kind is, as you noted, $*\rightarrow *$, which makes it a type constructor.

Note also that the List type constructor is not a term in system F, for that you need to go further out to system ${F}_\omega$, which was designed in part to study how polymorphism and type constructors may interact.