Do you know how it works?

template< int B, int N > class TemplatePower {
public:
enum { value = TemplatePower< B, N - 1 >::value * B };
};

template< int B >class TemplatePower< B, 1 > {
public:
enum { value = B };
};