如何在可变参数模板(无宏)中更改包的名称:
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:
}
预感到这是不可能的。最好直接在模板的主体中使用模板参数。
答案 0 :(得分:0)
你不能typedef
variadic-template。但是,我看不出问题
inline Tuple(const T&, const _Rest&...) {}
无论如何,您可以使用元组来typedef
_Rest
。
typedef std::tuple<_Rest...> RestArgs;
从中你可以根据需要选择所有类型。