我想要创建一个元函数,Append
采用模板类型,并将N
类型参数的数量T
添加到模板,例如,如果我调用Append<2, int, std::tuple<>>
我想获得std::tuple<int, int>
。如何将模板参数重复附加到某个类型?
这里是我试过:
#include <tuple>
template <int N, typename T, template <class> class Seq, typename... Args>
struct Append;
template <int N, typename T, template <class> class Seq, typename... Args>
struct Append<N, T, Seq<Args...>>
{
using type = Append<N-1, T, Seq<Args..., T>>::type;
};
template <typename T, template<class> class Seq, typename... Args>
struct Append<0, T, Seq<Args...>>
{
using type = Seq<Args...>;
};
// create a big tuple with N number of "int" types in it
using T = Append<2, int, std::tuple<>>::type;
int main()
{
return 0;
}
然而,当我尝试编译此我得到:
error: type/value mismatch at argument 3 in template parameter list for ‘template class Seq, class ... Args> struct Append’
我缺少什么?
* error:模板模板参数的模板参数必须是类模板或类型别名模板*在'Seq> –
chris
2014-10-16 23:07:25