模板参数数量错误的模板参数

2024-04-13

考虑一个模板类 C,它具有通过模板模板参数设置的策略和两个策略定义:

template<class T> struct PolicyOne { };
template<class T, int U, int V> struct PolicyTwo { };
template<class T, template<class> class POLICY> struct C { POLICY<T> policy; };

void f()
{
    C<int, PolicyOne> mc1;
    C<int, PolicyTwo<1, 2> > mc2; // doesn't work this way
}

PolicyTwo由于模板参数数量错误而不起作用。 有没有办法使用PolicyTwo as POLICY模板参数是否指定附加模板参数的类型?

我使用的是 C++03,因此别名声明不可用。 我知道这个问题 https://stackoverflow.com/q/2795023/427532,但我在那里看不到解决我的问题的方法。


根据策略的使用方式,您可以使用继承代替别名模板进行管理:

template<int U, int V> struct PolicyTwoAdaptor {
  template<class T> struct type: PolicyTwo<T, U, V> { }; };
C<int, PolicyTwoAdaptor<1, 2>::type> mc2;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模板参数数量错误的模板参数 的相关文章

随机推荐