- // 定义递归方式
- template <unsigned n>
- struct fn {
- enum {value = fn<n - 1>::value + fn<n - 2>::value};
- };
- // 模板特化, 当N=0时,value为1
- template <>
- struct fn<0> {
- enum {value = 1};
- };
- // 模板特化,当N=1时,value为1
- template <>
- struct fn<1> {
- enum {value = 1};
- };
- #include <iostream>
- int main()
- {
- // 编译期间,模板递归展开,value的值在编译期间完成计算
- std::cout << fn<10>::value << std::endl;
- return 0;
- }
上面贴了一则代码,用于演示模板展开时的强大计算功能,以往我们在学习数据结构时,算法代码在运行时执行,这里是不是感觉更有意思?
欢迎进入功能强大的C++模板元编程技术的世界,我将会把收集到的资料,结合自己的调试和学习心得,写成帖子,欢迎大家给出自己的看法和意见,我们共同学习进步。