Listing 2: A metaprogram to generate factorials
template<int N> class Factorial {
public:
  enum {f = N * Factorial<N-1>::f};
};
     
class Factorial<1> {
public:
  enum { f = 1 };
};
     
int main(){
  int f = Factorial<5>::f;
  return 0;
}
/* End of File */