То, что вы ищете, это форсированные списки типов .Однако я бы не рекомендовал погружаться в Boost MPL, если вы еще не очень имеете опыт работы с шаблонами и знаете, сколько их сложностей работает.
Теперь для простой домашней реализации:
struct Null {};
template <typename Type, typename Next>
struct List
{
typedef Type Type;
typedef Next Next;
};
//Now you can make lists like so:
typedef List<int, List<float List<short, Null> > > MyList;
Оттуда используйте рекурсивные реализации Templated для вызова требуемых статических методов.
Если вам нужна дополнительная информация об этих видах методов, вам следует прочитать Современный дизайн C ++