在我的一个项目中,我有以下类模板层次结构:
template <typename FruitType, typename ParentFilterType = void>
class filter;
template <typename FruitType> // Specialization when no parent filter is needed
class filter<FruitType, void>;
哪里FruitType
可以是任何东西。假设它是apple
或banana
之一orange
。所以基本上,afilter
可以有自己的父 filter
类型。
我无法控制filter
代码:它必须保持原样。
用户代码通常如下所示:
filter<apple, filter<banana, filter<orange> > > my_apple_filter;
显然,这有点冗长。我想知道是否有可能获得更具可读性的东西。就像是:
complex_filter<apple, banana, orange>::type my_apple_filter;
哪里complex_filter<apple, banana, orange>::type
会解决filter<apple, filter<banana, filter<orange> > >
。
我试着complex_filter
做一个struct
有内部的模板,typedef
但到目前为止还没有成功。模板参数的数量应该是可变的(例如,从 1 到 5)。
你有没有需要类似的东西?我怎么能那样做?
(不幸的是,我不能使用 C++0x,但如果有更好的解决方案,请随时发布它,因为它总是很高兴知道)
谢谢你。