जब हम एक टेम्पलेट का उपयोग करके संकलन समय पर गणना करने के लिए प्रोग्राम लिखते हैं, जिसे टेम्प्लेट मेटाप्रोग्रामिंग कहा जाता है।
उदाहरण कोड
#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
उपरोक्त उदाहरण में, जब संकलक शक्ति देखता है<7>::मान, यह 7 के रूप में पैरामीटर के साथ शक्ति का एक उदाहरण बनाने की कोशिश करता है, तो यह पता चलता है कि शक्ति<6> को भी बनाया जाना चाहिए क्योंकि संकलन समय पर गणना स्थिर मूल्य का मूल्यांकन किया जाना चाहिए . शक्ति के लिए<6>, संकलक को शक्ति की आवश्यकता होती है<5>और इसी तरह। अंत में, कंपाइलर funStruct<1>::value का उपयोग करता है और कंपाइल टाइम रिकर्सन टर्मिनेट करता है। इसे टेम्प्लेट मेटाप्रोग्रामिंग कहा जाता है।