在可变参数模板中键入或重命名包

时间:2013-12-06 06:03:41

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

如何在可变参数模板(无宏)中更改包的名称:

template <class _T, class... _Rest>
class MyTuple : public MyTuple<_Rest...>
{
// Yes. It's my tuple.
public:
    typedef _T T; // Ok!

    typedef _Rest Rest; // Problem!
    using URest = _Rest; // ???

    inline Tuple() {}
    inline Tuple(const T&, const Rest&...) {} // Problem!
}

template <class _T>
class MyTuple<_T>
{
public:
}

预感到这是不可能的。最好直接在模板的主体中使用模板参数。

1 个答案:

答案 0 :(得分:0)

你不能typedef variadic-template。但是,我看不出问题

inline Tuple(const T&, const _Rest&...) {}

无论如何,您可以使用元组来typedef _Rest

typedef std::tuple<_Rest...> RestArgs;

从中你可以根据需要选择所有类型。

相关问题