元编程的最大特点在于:某些用户自定义的计算可以在程序翻译期进行,可以得到优化和接口简单性。
在类声明的内部可以使用枚举值和静态常量成员。但静态常量成员必须是左值。
当通过引用传递枚举值时,并不会使用任何静态内存,就像是以文字常量的形式传递这个完成计算的值一样。

#include"pow.h"
#include<iostream>
using namespace std;
template<int N>
class Pow{
public:
    enum{result = 3*Pow<N-1>::result};
};

//结束递归的全局特化
template<>
class Pow<0>{
public:
    enum{result=1};
};

int main()
{
    cout << Pow<5>::result << endl;//3的5次方
}

243