0
template <typename T1, typename T2>
class Base
{
  T1 t1; 
  T2 t2;
};

template <typename...TN>
class Derived
    : public Base< std::tuple<QList<TN...>>,
                   std::tuple<QVector<TN...>> > //does not work
{
};

Derived<int, double> d;
  • t1将成为std::tuple<QList<int>, QList<double>>
  • t2将成为std::tuple<QVector<int>, QVector<double>>

我不知道这是否可能。目前我为此使用预处理器魔法。但我希望可变参数模板也可以做到这一点。那么,我可以做任何递归的事情或任何类似的事情来提取模板吗?

4

1 回答 1

1

正如@dyp 所说,您在错误的位置展开了包。它应该是这样的:

: public Base< std::tuple<QList<TN>...>,
               std::tuple<QVector<TN>...> >
于 2014-03-20T11:51:57.533 回答