模板元编程

来源:互联网 发布:腾讯阿里云 编辑:程序博客网 时间:2024/06/06 14:00

/*
第12题
题目:求1+2+…+n,
要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。

思路:模板元编程,最快捷的计算方式,编译期完成计算
*/

C/C++ code


#include
<iostream>

using namespace std;

template
<int N>
struct CalCls
{
enum {sum = CalCls<N-1>::sum + N};
};

template
<>
struct CalCls<0>
{
enum {sum = 0};
};


int main()
{
cout
<<"1+2+3+...+100 = "<<CalCls<100>::sum<<endl;
return 0;
}