存储可变参数模板args并在另一个类中使用它们

时间:2014-01-17 19:44:54

标签: c++ templates c++11 variadic-templates

我正在尝试将可变参数模板参数存储在一个模板类中,并在另一个模板类中使用它们。类似的东西:

template<typename... Args>
struct A{
    typedef Args... type; // heh
};

template<typename A_T>
struct B{
    void foo(A_T::type... args){}
};


B<A<int,int> > b;
b.foo(2,3);

所有帮助表示赞赏!

1 个答案:

答案 0 :(得分:3)

您无法将类型定义为多种类型!正如所有评论中所建议的std::tuple是获得产品类型的正确方法。

typedef std::tuple<Args...> type; // instead of typedef Args... type;

实现通话

B<A<int,int> > b;
b.foo(2,3);

您可以稍微修改代码

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

template<typename A_T>
struct B{
};

template<template<typename...> class A_T, typename... Args>
struct B<A_T<Args...>>{
    void foo(Args... args){
    }
};