เมื่อเราเขียนโปรแกรมเพื่อทำการคำนวณ ณ เวลาคอมไพล์โดยใช้เทมเพลต เรียกว่า Template Metaprogramming
โค้ดตัวอย่าง
#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;
} ผลลัพธ์
power is:16384
ในตัวอย่างข้างต้น เมื่อคอมไพเลอร์เห็นค่า power<7>::value จะพยายามสร้างอินสแตนซ์ของค่าพารามิเตอร์เป็น 7 ปรากฎว่าจะต้องสร้าง power<6>เป็นค่าคงที่การแจงนับ ณ เวลาคอมไพล์ . สำหรับ power<6> คอมไพเลอร์ต้องการ power<5>และอื่นๆ สุดท้าย คอมไพเลอร์ใช้ funStruct<1>::value และการเรียกซ้ำของเวลาคอมไพล์สิ้นสุดลง นี่เรียกว่าเมตาโปรแกรมมิ่งเทมเพลต