原则48:认识template元编程

正如题目所述该原则就是让你对模版元编程有一个初步的了解。模版元编程简称为TMP是template metaprogramming的缩写,它可以将原本在运行期才做的事情放到编译期来做。它不是被发明的而是被发现的,现在正处于起步阶段。
TMP有两大作用:1、它让变成更容易。2、它只在C++编译期执行,于是它可以把工作从运行期转移到编译期。
这会导至TMP的优缺点。
TMP的优点:原本在运行期出现的错误可以在编译期找出来。它使得C++程序在各方面更高效,比如较小的可执行文件,较短的运行期,较少的内存占用等。
在这里作者提到了上一个原则中的advance的例子。作者说编译器必须确保所有的代码都是有效的无论这个代码能否被最终执行到,因此有些代码虽然从逻辑上来讲没有问题,但是编译器对其有效性进行了检查,从而导致编译器报错。而使用TMP生成的若干个重载函数会根据特定的情况调用相应的函数,解除了编译器对代码的无用的有效性检测从而达到了预期的目的。
TMP的缺点:它使编译期变长了。
TMP的语法不同于正常的C++,它是个函数式语言。在此原则中,作者提到TMP没有循环,它只能通过递归来实现循环,并且每个TMP的具体化都是个struct。
作者还说TMP非常强大几乎无所不能。为了说明这一点作者举了它能够确保度量单位的正确性,优化矩阵运算和可生成客户定制之设计模式实现品等。
目前TMP还不是很成熟,它主要用于程序库的开发。
总结:
1、TMP可将工作从运行期转移至编译期从而获得错误的早期检测和更高的执行效率。
2、TMP可生成基于“政策选择组合”的客户定制代码,也可避免对某些特殊类型不合适的代码。

你可能感兴趣的:(原则48:认识template元编程)