Back to slide -- Keyboard shortcut: 'u'  previous -- Keyboard shortcut: 'p'  next -- Keyboard shortcut: 'n'          templates/functions/pow/pow1a.cpp - The power function on integer type arguments - alternative implementation with an enumeration constant.Lecture 6 - slide 40 : 40
Program 3

// The power function on integer type arguments - use of enumeration constants.

#include <iostream>

// The general case:
template <unsigned int N, unsigned int P> struct Power{   
  enum {value = N * Power<N,P-1>::value};
};
 
// The base case, via template specialization:
template <unsigned int N>struct Power<N,1> {              
  enum {value = 1};
};

int main(){
  std::cout << Power<5,3>::value << std::endl;    // 25
  std::cout << Power<5,5>::value << std::endl;    // 625
  std::cout << Power<5,7>::value << std::endl;    // 15625
}