เมื่อเราเขียนโปรแกรมเพื่อทำการคำนวณ ณ เวลาคอมไพล์โดยใช้เทมเพลต เรียกว่า 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 และการเรียกซ้ำของเวลาคอมไพล์สิ้นสุดลง นี่เรียกว่าเมตาโปรแกรมมิ่งเทมเพลต