सी में, टेम्पलेट तर्क स्थिर अभिव्यक्ति होने चाहिए। इसका मतलब यह है कि उनके मूल्यों को संकलन समय पर जाना जाना चाहिए। कंपाइलर इस संदर्भ में एक गैर-स्थिर चर का मूल्यांकन नहीं कर सकता है।
कोड पर विचार करें:
template
void modify(){}
टेम्पलेट तर्क के रूप में एक गैर-स्थिर चर को पारित करने के लिए, हम लिख सकते हैं:
for(int i = 0; i ();
}
हालाँकि, यह एक त्रुटि उत्पन्न करता है क्योंकि कंपाइलर कंपाइल समय पर i का मान निर्धारित नहीं कर सकता है। लूप बॉडी कई बार निष्पादित हो सकती है, जिससे i का मान बदल जाता है। एक पुनरावृत्तीय कॉल:
#include#include
template
void modify() { std::cout "
void modify() { std::cout "
void modify() {
std::cout " ();
}
int main() {
modify();
}
इस उदाहरण में, callModify एक पैरामीटर N लेता है जो एक टुपल के आकार का होता है जिसमें i के लिए मानों की वांछित सीमा होती है। निर्दिष्ट आकार एन तक संशोधित करने के लिए कॉल उत्पन्न करने के लिए फ़ंक्शन एक पुनरावर्ती मेटाप्रोग्राम का उपयोग करता है।अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3