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
दूसरा तर्क स्पष्ट करना
नोटेशन में:
template::value, int>::type = 0>
void foo(const T& bar) { isInt(); }
दूसरे टेम्पलेट पैरामीटर को डिफॉल्ट करने के लिए = 0 का उपयोग किया जाता है। यह foo
उल्लेखनीय विवरण
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3