- Examples
We'll look at a few examples of template metaprogramming in this lesson.
We'll cover the following...
Example 1: Template Prime Number #
Press + to interact
// templatePrimeNumber.cpp// Prime number computation by Erwin Unruhtemplate <int i> struct D { D(void*); operator int(); };template <int p, int i> struct is_prime {enum { prim = (p==2) || (p%i) && is_prime<(i>2?p:0), i-1> :: prim };};template <int i> struct Prime_print {Prime_print<i-1> a;enum { prim = is_prime<i, i-1>::prim };void f() { D<i> d = prim ? 1 : 0; a.f();}};template<> struct is_prime<0,0> { enum {prim=1}; };template<> struct is_prime<0,1> { enum {prim=1}; };template<> struct Prime_print<1> {enum {prim=0};void f() { D<1> d = prim ? 1 : 0; };};#ifndef LAST#define LAST 18#endifint main() {Prime_print<LAST> a;a.f();}
Explanation #
This is the original prime number program by Erwin Unruh, which was the starting point of template metaprogramming. Current compilers ...
Access this course and 1400+ top-rated courses and projects.