设置多个模板参数值

Set value of several template parameters

本文关键字:参数 设置      更新时间:2023-10-16

是否可以设置模板的部分参数,其余的仍作为模板参数?比如创建一个新的模板类,与第一个模板类相同,但模板参数的数量更少。

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
};
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>

我建议使用不同的名称

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
};