Di mana dan mengapa saya harus meletakkan kata kunci "templat" dan "ketikkan"?

Dalam templat, di mana dan mengapa saya harus meletakkan typenamedan templatepada nama-nama dependen? Apa sebenarnya nama dependen itu? Saya memiliki kode berikut: template <typename T, typename Tail> // Tail will be a UnionNode too. struct UnionNode : public Tail { // ......