TMP(模板元编程)可将工作由运行期移往编译期,因而得以实现早期错误发现和高效的执行效率。
下面是一个模板元编程的实例,用以解决n!问题
// item49_TMP.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
/************************************************************************/
/*
递归模板具现化解决n!问题
*/
/************************************************************************/
template<unsigned n>
struct FaJie
{
enum {value = n*FaJie<n-1>::value};
};
template<>
struct FaJie<0>
{
enum {value = 1};
};
void main()
{
cout<<FaJie<5>::value<<endl;
cout<<FaJie<12>::value<<endl;
}