যখন আমরা টেমপ্লেট ব্যবহার করে কম্পাইল টাইমে কম্পিউটেশন করার প্রোগ্রাম লিখি, তাকে টেমপ্লেট মেটাপ্রোগ্রামিং বলে।
উদাহরণ কোড
#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 দেখে, এটি প্যারামিটার ৭ দিয়ে power-এর একটি ইনস্ট্যান্স তৈরি করার চেষ্টা করে, এতে বের হয় power<6>-ও তৈরি করতে হবে কারণ enum কনস্ট্যান্ট value কম্পাইল টাইমে ইভ্যালুয়েট হতে হবে। power<6>-এর জন্য কম্পাইলার power<5> দরকার এবং এভাবে চলে। अन्तে কম্পাইলার funStruct<1>::value ব্যবহার করে এবং কম্পাইল-টাইম রিকার্শন টার্মিনেট হয়। এটাকে টেমপ্লেট মেটাপ্রোগ্রামিং বলে।