• 5101阅读
  • 1回复

C++模板编译期求值 [复制链接]

上一主题 下一主题
离线athxy
 

只看楼主 倒序阅读 楼主  发表于: 2009-12-07

C++模板编译期求值

帖子由 tiger » 2009-08-14 20:28http://www.xuanyuan-soft.cn/forums
下面是一段用模板求阶乘的代码,有兴趣的朋友可以把其他模板编译期求值的代码贴上来,分享一下。

代码: 全选
    /*
    * factorial.cpp
    *
    *  Created on: 2009-8-14
    *      Author: kwarph
    *        Mail: kwarph@gmail.com
    */
    #include <iostream>

    using namespace std;

    template<unsigned n>
    struct Factorial {
        static const unsigned v = n * Factorial<n - 1>::v;  // 递归
    };

    // 模板特化,也是上面递归的终止条件
    template<>
    struct Factorial<1> {
        static const unsigned v = 1;
    };

    // 模板特化,只匹配Factorial<0>情况
    template<>
    struct Factorial<0> {
        static const unsigned v = 0;
    };

    int main() {
        cout << Factorial<5>::v << endl;    // 120
        cout << Factorial<0>::v << endl;    // 0
    }


技术者五境界:工、匠、师、艺、道
Q Q 570508473
www.xuanyuan-soft.cn
离线athxy

只看该作者 1楼 发表于: 2010-01-01
课程涉及服务器端软件开发的方方面面:Linux/UNIX、C++、Boost、ACE、Shell编程、Oracle/MySQL、数据库建模、UML建模、项目实践、开发模式等等。我们希望从轩辕毕业的学员不仅是Coder,而且应该是Designer!我们认为具备此等专业水准方能在企业如鱼得水。
Q Q 570508473
www.xuanyuan-soft.cn
快速回复
限100 字节
 
上一个 下一个