设置几个模板参数的值

时间:2014-05-13 11:27:26

标签: c++ templates gcc c++11

是否可以设置模板的某些参数并将其余参数保留为模板参数?类似于创建新模板类的东西,与第一个模板类相同但模板参数数量较少。

A无法解释清楚。也许有几行代码可以帮助。

template<int A, typename B>
class XXX
{
    //Some code
};

template<template<typename> class C>
class YYY
{
    //Some code
};

template<int D>
class ZZZ
{
    YYY<XXX<D> > object; //This is wrong. How to do it?
};

我找不到任何能够实现这一目标的机制。

修改 我选择的例子不正确。 ZZZ类看起来像:

template<int D>
class ZZZ : public YYY<XXX<D> >
{
    //Some code
};

2 个答案:

答案 0 :(得分:1)

template<class T>using WWW=XXX<D,T>;

或者,如果您没有空间来执行using参数:

template<int D>struct WW{
  template<class T>using W=XXX<D,T>;
};

template<int D>
class ZZZ : public YYY<WW<D>::template W>

我建议使用不同的名字。

答案 1 :(得分:0)

Yakk的回答让我意识到我可以创建定义新类的结构。

template<int E>
struct SetPrameter
{
    template<typename T>
    using XXX = XXX<E, T>;
};

我可以这样使用它:

template<int D>
class ZZZ : public YYY<typename SetPrameter<D>::XXX>
{
    //Some code
};