2013-06-13 4 views
6

Я читаю через Modern C++ Design, и мне пришла в голову мысль, что конструктор типов может быть заменен вариативными шаблонами. Оба, похоже, полагаются на рекурсию для обработки первого типа в списке, а остальная часть списка - отдельно. Есть ли что-нибудь, что можно сделать в списках типов?Являются ли перечни типов полностью заменены вариативными шаблонами?

ответ

8

Typelists позволяют вам несколько вещей. Например, вы не можете иметь VARIADIC аргумент пакет, как в результате metafunction - нет никакого способа, чтобы выразить что-то вроде этого:

template <typename... Args> 
struct argpack_id { 
    typedef Args result; 
}; 

Вы можете сделать это с списками типов.

С другой стороны, вы, вероятно, следует реализовать сам список типов, как

template <typename... Args> 
struct TypeList {};