// powers.cpp: Two power functions resulting from a template
#include <iostream>
using namespace std;

template <class basetype, class resultype>
resultype power(basetype a, int n) {
 resultype x = 1;
 for(int i=1; i<=n; ++i)
  x *=a;
 return x;
}

int main() {
 cout << power<int, long>(10, 9) << endl;
 cout << power<double, double>(10, 30) << endl;
 return 0;
}
