Loki中关于层次结构的生成
※:
我们是否能够写出基类可以灵活变画的继承体系?
讨论:
☆:
编程的本质就是muli choice test。从这一点上讲,基类可灵活变化这个题眼是有意义的。
☆☆:
继承的写法是渐进进化的:
A :pulibc B
template<typename Derived> A :public Derived
到我们现在要讨论的新的做法。
template<typename D1,typename D2> A: public base_select<D1,D2,A>
template<typename D1,typename D2,typename slector>
struct base_select;
特化处理.....
template<>
struct base_select<A,B,C> : public A{};
struct base_select<D,B,C> : public B{};
部分化处理....
☆☆☆:
第二项是有具体例子的,GenScatterHierarchy就是一个很好的实证。
template <class TList, template <class> class Unit>
class GenScatterHierarchy;
template <class T1, class T2, template <class> class Unit>
class GenScatterHierarchy<Typelist<T1, T2>, Unit>
: public GenScatterHierarchy<T1, Unit>
, public GenScatterHierarchy<T2, Unit>
template <template <class> class Unit>
class GenScatterHierarchy<NullType, Unit>
template <class AtomicType, template <class> class Unit>
class GenScatterHierarchy : public Unit<AtomicType>
也就是将基类继承的规则单单地拿了出来。这很符合one rule,one sentence这个规则。