1,policy
关键是将class分解为一组正交的行为;正确的分解出来之后,它叫policy也好,依赖注入也好,静态也好,动态也好,都无所谓,只需用手边的语言或工具将它们组织起来即可,良好的设计不依赖于它的名字,基于policy的编程和依赖注入基本是一回事,关键是你基于哪些policy,你注入啥
2,编译器:被忽略的计算机
编译器对代码所做的检查,即是编译器的接口,是很重要和有用的计算能力,所有编译期技术皆依赖于此;这些可利用的计算能力实际上包括所有C++语法规则:大小不能为0的数组,用到的类或函数必须有定义,sizeof(),模板实例化,等等
3,局部类
可用于在针对接口编程的系统中隐藏实现
4,Int2Type, Type2Type, TypeSelection....
额外的中间层
5,typelist
简直就是LISP,最简单却又最具表达力,一切拜抽象、递归所赐
template<T, U> struct TypeList{ typedef T Head;
typedef U Tail;
}