读书人

C++中应用模板对数组进行“编译期

发布时间: 2012-09-03 09:48:39 作者: rapoo

C++中,使用模板,对数组进行“编译期间求和”

编译期间求值,将计算提前到编译期间进行,可以最大限度地榨干编译器的潜力,提高程序的运行速度,用Andrei Alexanderescu的话说就是“时间花在编译期,就某种意义来说这是‘免费的’”(《C++设计新思维》P55)。所以就有了对数组在编译期间求和的需求。

先上代码,再解释:

cout<<SumArrInCompilePhaseCls<-1>::SUM<<endl;//数组下标为负cout<<SumArrInCompilePhaseCls<5>::SUM<<endl;//数组上界越界


正文完。


参考资料:

1、《C++设计新思维》,Andrei Alexanderescu著,侯捷、於春景译。

2、C++模板元编程技术与应用

3、荣威老师写的其他文章或书籍

4、C++ 的MetaProgramming 入门篇

注意:

以上代码在VS2005和G++中都能编译通过,但是只有G++编译出来的程序才能运行出正确结果(15),VS2005中的结果是错误的(5),原因还不清楚,如果您知道VS2005计算错误的原因,请及时留言通知我,我会非常感激您的!



读书人网 >C++

热点推荐