--- title: "Template metaprogramming in C++: compile-time Fibonacci" description: "Compute Fibonacci numbers at compile time with C++ template metaprogramming: a recursive struct template with explicit specializations as base cases." date: 2023-04-06 last_modified_at: 2026-10-02 keywords: [C++, template metaprogramming, compile-time computation, Fibonacci, templates] --- # Template Metaprogramming - Fibonacci Template metaprogramming is a technique in C++ that uses templates to perform computations at compile time. ## Fibonacci Implementation The Fibonacci sequence can be implemented using template metaprogramming: ```cpp template struct Fibonacci { static const int value = Fibonacci::value + Fibonacci::value; }; // Base cases template<> struct Fibonacci<0> { static const int value = 0; }; template<> struct Fibonacci<1> { static const int value = 1; }; ``` This implementation computes Fibonacci numbers at compile time, making runtime computation unnecessary. The template specializations for `N=0` and `N=1` serve as base cases to terminate the recursion. Using this implementation, `Fibonacci<10>::value` would give you the 10th Fibonacci number, all calculated during compilation.