अंतिम अद्यतन:2026-10-12
C++17 टेम्प्लेट auto डिडक्शन¶
C++ में सब कुछ auto¶
C++17 ने कोड की अभिव्यक्ति बढ़ाने और टेम्प्लेट कोड की बचत कम करने के लिए कई सुविधाएँ पेश कीं। इनमें एक उल्लेखनीय सुधार auto कीवर्ड से non-type टेम्प्लेट पैरामीटर घोषित करने की क्षमता है। कुछ परिदृश्यों में यह विशेषता खासतौर पर सुविधाजनक है, क्योंकि यह स्पष्ट प्रकार घोषणा की ज़रूरत मिटा देती है। आगे मैं अपने काम में, यानी डेटाबेस में इस विशेषता का उपयोग कैसे करता हूँ, वह पेश करूँगा!
अभ्यास से सीखने के लिए, इस सेक्शन का पूरा सोर्स कोड 星球 पर अपलोड किया जाएगा, रुचि हो तो अंतिम पेज का QR कोड देखें।
C++17 में auto के साथ non-type टेम्प्लेट पैरामीटर¶
डेटाबेस परिदृश्य में सॉर्टिंग¶
एक डेटाबेस से संबंधित क्लास Foo पर विचार करें, जिसे आप enum द्वारा दर्शाए गए विशेष क्रम के अनुसार सॉर्ट करना चाहते हैं:
आपके पास भिन्न सॉर्ट क्रम वाले Foo इंस्टेंस हैं:
पहले का तरीका¶
C++17 से पहले, हम शायद ऐसे लागू करते थे:
हालांकि, इससे त्रुटि हो सकती है, क्योंकि कंपाइलर टेम्प्लेट पैरामीटर 'U' का अनुमान नहीं लगा पाता।
अब का सरल तरीका¶
C++17 के बाद, non-type टेम्प्लेट पैरामीटर के लिए हम auto कीवर्ड से उसकी जगह ले सकते हैं:
यह तरीका अधिक सरल है, जिससे हमें स्पष्ट रूप से प्रकार बताए बिना non-type टेम्प्लेट पैरामीटर का उपयोग करने की सुविधा मिलती है।
integral_constant का सरलीकरण¶
पहले, हम शायद इस तरह integral_constant लागू करते थे:
जबकि अब केवल:
यह सरलीकरण कोड को अधिक स्पष्ट और पढ़ने योग्य बनाता है।
निष्कर्ष¶
C++17 द्वारा पेश auto कीवर्ड का non-type टेम्प्लेट पैरामीटर घोषणा में उपयोग टेम्प्लेट कोड को बहुत सरल बना देता है। थकाऊ प्रकार घोषणाएँ हटाकर, हम कोड के इरादे को अधिक सहज रूप से व्यक्त कर पाते हैं, जिससे कोड की पठनीयता और रखरखाव क्षमता बढ़ती है। सॉर्टिंग जैसे परिदृश्यों में यह विशेषता विशेष रूप से उपयोगी है, जो हमें टेम्प्लेट पैरामीटर के विवरणों की बजाय समस्या के मूल पर ध्यान केंद्रित करने देती है।
संबंधित विषय¶
- C++17 [[nodiscard]] एट्रिब्यूट | C++那些事
- C++17 std::string_view | C++那些事
- C++17 PMR मेमोरी रिसोर्सेज़ | C++那些事
- C++17 सत्तरह उन्नत विशेषताएँ | C++那些事
- C++17 क्लास टेम्प्लेट आर्ग्युमेंट डिडक्शन CTAD | C++那些事
- C++17 optional_ref | C++那些事
- C++17 std::variant | C++那些事
- C++17 स्ट्रक्चर्ड बाइंडिंग्स | C++那些事
- C++17 वेरिएबल टेम्प्लेट्स | C++那些事