Template Metaprogramming in C++


When we write programs to do computation at compile time using a template, that is called Template Metaprogramming.

Example Code

#include <iostream>
using namespace std;

template<int n>struct power {
   enum { value = 4*power<n-1>::value };
};

template<>struct power<0> {
   enum { value = 1 };
};

int main() {
   cout <<”power is:”<< power<7>::value << endl;
   return 0;
}

Output

power is:16384

In above example, When compiler sees power<7>::value, it tries to create an instance of power with parameter as 7, it turns out that power<6>must also be created as enumeration constant value must be evaluated at compile time. For power<6>, compiler need power<5>and so on. Finally, compiler uses funStruct<1>::value and compile time recursion terminates. This is called template metaprogramming.

Updated on: 30-Jul-2019

198 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements