"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जब संकलन समय पर तर्क ज्ञात नहीं है तो मैं टेम्पलेट तर्कों के साथ निरंतर मूल्यांकन कैसे प्राप्त कर सकता हूं?

जब संकलन समय पर तर्क ज्ञात नहीं है तो मैं टेम्पलेट तर्कों के साथ निरंतर मूल्यांकन कैसे प्राप्त कर सकता हूं?

2024-11-20 को प्रकाशित
ब्राउज़ करें:350

How Can I Achieve Constant Evaluation with Template Arguments When the Argument Is Not Known at Compile Time?

टेम्पलेट तर्क निरंतर मूल्यांकन

1. कंपाइलर कंपाइल समय पर 'i' का मूल्यांकन क्यों नहीं कर सकता?

कंपाइल-टाइम मूल्यांकन के लिए आवश्यक है कि प्रोग्राम निष्पादित होने से पहले 'i' का मान ज्ञात हो। हालाँकि, दिए गए कोड में, 'i' एक लूप वेरिएबल है जो प्रोग्राम निष्पादन के दौरान बदलता है। कंपाइलर कंपाइल समय पर 'i' का मान निर्धारित नहीं कर सकता क्योंकि यह एक गतिशील रूप से निर्दिष्ट मान है।

2। क्या मैं एपीआई इंटरफ़ेस को संशोधित किए बिना उद्देश्य प्राप्त कर सकता हूं?

हां, आप एक पुनरावर्ती फ़ंक्शन बनाने के लिए टेम्पलेट विशेषज्ञता का उपयोग कर सकते हैं जो टेम्पलेट तर्कों की श्रृंखला के माध्यम से पुनरावृत्त होता है। उदाहरण के लिए, आप एक फ़ंक्शन बना सकते हैं:

template
void modify_recursive() {
    // Call modify with template argument 'i'
    modify();
    
    // Recursively call modify_recursive with the next template argument
    if (i ();
    }
}

template संरचना InvokeWithParam { InvokeWithParam(F f, int पैरामीटर) : f(f), पैरामीटर(param) {} शून्य ऑपरेटर()() { एफ(परम); } एफ एफ; पूर्णांक परम; };

फिर आप संशोधित करने के लिए टेम्पलेट तर्क के रूप में InvokeWithParam का एक उदाहरण पास कर सकते हैं:

template
struct InvokeWithParam {
    InvokeWithParam(F f, int param) : f(f), param(param) {}
    
    void operator()() { f(param); }
    
    F f;
    int param;
};
यह var के मान के साथ संशोधित फ़ंक्शन को प्रारंभ करेगा।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3