我目前仍然坚持使用C ++ 03,因此可变参数模板对我不起作用。
我可以使用boost :: mpl :: vector和boost :: mpl :: inherit_linearly使用有限数量的参数做我想要的但是我想做类似于以下的操作,所以用户不会这样做必须直接处理mpl容器:
template<class T, class A1, class A2 = void_, class A3 = void_>
class Foo : public FooHelper<T, boost::mpl::vector<A1, A2, A3>> {}
我可以使用魔法类型而不是void_,该向量会自动解释为默认模板参数的终结符吗? boost :: mpl :: void_实际上没有工作,序列元函数将迭代它。
现在我有一个专门化,它捕获我自己的终结类,并使它几乎成为层次结构中的无操作,但我只是提升,只需将void_条目视为集合的结尾。 / p>