[C++] Kleines Beispiel zu Template Metaprogramming - Berechnung von Fibonacci-Zahlen

Thomas Darimont

Erfahrenes Mitglied
Hallo,

hier ein kleines Beispiel zu Template Metaprogramming unter C++. Im Beispiel wird die 10-te Fibonacci-Zahl berechnet, dies findet jedoch nicht zur Laufzeit statt sondern wird zur Compile-Zeit vom Compiler durchgeführt.
C++:
#include <iostream>

using namespace std;

template <int N>
struct Fibonacci{
  enum { 
     value = Fibonacci<N-1>::value + Fibonacci<N-2>::value
   };
};

template <>
struct Fibonacci<1>{
  enum {
     value = 1
  };     
};

template <>
struct Fibonacci<0>{
  enum {
     value = 0
  };     
};

int main(int argc, char *argv[])
{
    const int fib = Fibonacci<10>::value;
    cout << fib << endl;
    return 0;
}

Ausgabe:
Code:
55

Gruß Tom
 
Zurück