我正在阅读现代C ++设计,并且我想到类型列表构造可以由可变参数模板替换。两者似乎都依赖递归来分别处理列表中的第一个类型和列表的其余部分。是否有任何类型列表允许您这样做,变量模板不会?
答案 0 :(得分:10)
列表允许您进行一些操作。例如,作为元函数的结果,你不能有一个可变参数包 - 没有办法表达这样的东西:
template <typename... Args>
struct argpack_id {
typedef Args result;
};
您可以使用类型列表执行此操作。
另一方面,您可能应该将类型列表本身实现为
template <typename... Args>
struct TypeList {};