Lists of letters allow you a few things. For example, you cannot have a package of variational arguments as a result of a metapound - there simply is no way to express something like this:
template <typename... Args> struct argpack_id { typedef Args result; };
You can do this with type lists.
On the other hand, you should probably implement the list itself as
template <typename... Args> struct TypeList {};
source share