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