C++ 模板元编程的两个例子
C++模板元编程,是使用 template 进行编译期运算的一种机制,可以认为是 C++的一种编程方式。
第一个例子:计算整数 N 的阶乘。
复制代码
运行结果:10! = 3628800
其中的思考方式,我感觉是数学归纳法的应用。注意模板在其中起的作用,在编译期,编译器使用 template 生成了 class Factorial<0>……class Factorial<10>一共 11 个 class 定义,在程序运行时其实计算过程并没有占用 CPU 时间,只不过这么多 class 的定义占用了一些内存。
第二个例子:编译期的 if 语句
这是 Bjarne Stroustrup 在《Evolving a language in and for the real world C++ 1991-2006》一文中举的例子。
复制代码
其实也是根据编译期能确定的值,来进行编译期的选择。
模板元编程的应用包括:Blitz++库;boost::mpl 库;以及《Modern C++ Design》一书中提到的 typelist。
版权声明: 本文为 InfoQ 作者【老王同学】的原创文章。
原文链接:【http://xie.infoq.cn/article/0053950315d1c52240c873fba】。文章转载请联系作者。
评论