如何拥有多个参数包

时间:2016-05-14 18:19:13

标签: c++ templates variadic-templates template-meta-programming

假设我有一个班级List

template<class... items>
class List;

这实际上只是一个粘贴大量参数并给它命名的地方。

我真正想要的是以某种方式将两个List合并在一起。

尝试:

template<class First,class Second>
struct Merge { };
template<template<class...> class First,template<class...> class Second,class... FirstItems,class... SecondItems>
struct Merge<First<FirstItems...>,Second<SecondItems...> >{
  typedef List<FirstItems...,SecondItems...> value;
};

但是这失败了,因为你不能在模板中有两个参数包。

那我该怎么做?

1 个答案:

答案 0 :(得分:2)

编写涉及模板的代码时,请确保为每个开放>包含<,否则您的代码将无法编译。

您可能想要编写正则表达式以确保您的代码具有此属性。不要:它无法完成。 c ++编译器很乐意为您提供有关丢失的>的错误消息,通常易于阅读&#34; <第77行未关闭&#34;。

毋庸置疑,您的代码(一旦添加了缺失的>),编译就好了。