¿Dónde y por qué tengo que poner las palabras clave "plantilla" y "nombre de tipo"?

En plantillas, dónde y por qué tengo que poner typenamey templatesobre los nombres de dependientes? ¿Qué son exactamente los nombres dependientes de todos modos? Tengo el siguiente código: template <typename T, typename Tail> // Tail will be a UnionNode too. struct UnionNode : public Tail...