总论
当我们去说元编程的时候,我觉得我们其实有很多方面,大致有如下几个:
- 可以自动生成代码
- 可以执行字符串源码
- 在运行时可以修改源码
总之每一个都是对于“源码只读”这个规矩的挑战。对于 C 而言,可以用宏来生成代码,而对于 C++ 而言,可以用 template 来代替宏。而对于其他元编程能力,C++ 显得有些为难。
总之,需要明确,C++ template 有着和 C 的 define 相同的设计思路,可以看作是宏的强化。它提供了一种类型安全,方便调试的宏。这种思路在强调 template 和宏一样,本质上都是在产生源码。