【发布时间】:2014-03-20 10:31:41
【问题描述】:
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>>
我不知道这是否可能。目前我为此使用预处理器魔法。但我希望可变参数模板也可以做到这一点。那么,我可以做任何递归的事情或任何类似的事情来提取模板吗?
【问题讨论】:
-
我认为
Base< std::tuple<QList<TN>...>, std::tuple<QList<TN>...> >应该可以正常工作 - 即您只是将...放在错误的位置(它扩展了以前的模式,并且您希望拥有QList<TN0>, QList<TN1>, and so on而不是QList<TN0, TN1, and so on >)
标签: c++ templates c++11 variadic-templates stdtuple