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

`std::enable_if` कैसे काम करता है: इसके कार्यान्वयन और उपयोग के रहस्यों को उजागर करना?

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

How Does `std::enable_if` Work: Unraveling the Mysteries of Its Implementation and Usage?

std::enable_if को समझना: इसके उद्देश्य और कार्यान्वयन को समझना

हालांकि std::enable_if की प्रकृति को कुछ संदर्भों में समझा जाता है, इसके पेचीदगियाँ, विशेष रूप से दूसरा तर्क और टेम्प्लेट स्टेटमेंट के भीतर std::enable_if को असाइनमेंट, बना हुआ है रहस्यमय. इसके कामकाज की गहराई में जाने से इन रहस्यों से पर्दा उठ जाएगा।

The अनिवार्यताएं std::enable_if

std::enable_if एक विशेष टेम्पलेट है जिसे इस प्रकार परिभाषित किया गया है:

template struct enable_if {};
template struct enable_if { typedef T type; };

महत्वपूर्ण बात यह है कि प्रकार उपनाम टाइपडेफ़ टी प्रकार केवल तभी परिभाषित किया जाता है जब कॉन्ड सत्य हो।

उपयोग का अनावरण

निम्नलिखित घोषणा पर विचार करें:

template
typename std::enable_if<:numeric_limits>::is_integer, void>::type foo(const T &bar) { isInt(bar); }

यहां, foo का रिटर्न प्रकार std::enable_if<:numeric_limits>::is_integer, void>::type द्वारा परिभाषित किया गया है। चूँकि std::numeric_limits::is_integer एक बूलियन शर्त है, यह रिटर्न प्रकार केवल तभी परिभाषित किया जाएगा यदि शर्त सत्य है।

दूसरा तर्क स्पष्ट करना

नोटेशन में:

template::value, int>::type = 0>
void foo(const T& bar) { isInt(); }

दूसरे टेम्पलेट पैरामीटर को डिफॉल्ट करने के लिए = 0 का उपयोग किया जाता है। यह foo(1) का उपयोग करके दोनों विकल्पों को लागू करने की अनुमति देता है, जबकि std::enable_if पैरामीटर डिफ़ॉल्ट नहीं होने पर दो टेम्पलेट पैरामीटर की आवश्यकता होती है।

उल्लेखनीय विवरण

  • टाइपनेम को स्पष्ट रूप से टाइप करने से std::enable_if<:condition t>::type बढ़ जाता है स्पष्टता।
  • सी 14 में, Enable_if_t एक स्थापित प्रकार है जिसे रिटर्न प्रकार के लिए नियोजित किया जाना चाहिए, इसे std::enable_if_t में सरल बनाया जाना चाहिए।
  • 2013 से पहले के विज़ुअल स्टूडियो संस्करणों के लिए , केवल रिटर्न प्रकार ही Enable_if को नियोजित कर सकता है।
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3