metaprogam用法一例

0 views
Skip to first unread message

bruc...@gmail.com

unread,
Oct 7, 2005, 8:35:19 PM10/7/05
to 星星爱CPP
题目:计算 1!+2!+3!+4!+ ...+n!

答案:
template<size_t n> struct factorial
{
enum{ val = n * factorial<n-1>::val };
};
template<> struct factorial<1>
{
enum{ val = 1 };
};

template<size_t n> struct factorial_acc
{
enum{ val = factorial<n>::val + factorial_acc<n-1>::val };
};
template<> struct factorial_acc<1>
{
enum{ val = factorial<1>::val };
};

#include <iostream>
using namespace std;
int main( void )
{
cout << factorial_acc<5>::val << endl;

return 0;
}

---

Reply all
Reply to author
Forward
0 new messages