Most of the time, we name generic types with one-character names like T or U. We frown upon such names for variables and functions because they make it very hard to know what we are talking about. Does T mean Type ? Does U stand for Union or is it just another Type ?
For the same reason we do not use single-character names for variables, functions and classes, we should not use them for generic (template) types.