Compute the nth fibonacci number using template metaprogramming.
#include <iostream>
using namespace std;
template <int N>
class FibonacciN {
public:
enum { result = FibonacciN<N-1>::result + FibonacciN<N-2>::result};
};
template <>
class FibonacciN<1> {
public:
enum { result = 0 };
};
template <>
class FibonacciN<2> {
public:
enum { result = 1 };
};
int main() {
// 0, 1, 1, 2, 3, 5, 8, 13, 21, 34
cout << FibonacciN<10>::result << endl;
system("pause");
return 0;
}