विषय पर बढ़ें

अंतिम अद्यतन:2026-10-12

C++17 टेम्प्लेट auto डिडक्शन

C++ में सब कुछ auto

C++17 ने कोड की अभिव्यक्ति बढ़ाने और टेम्प्लेट कोड की बचत कम करने के लिए कई सुविधाएँ पेश कीं। इनमें एक उल्लेखनीय सुधार auto कीवर्ड से non-type टेम्प्लेट पैरामीटर घोषित करने की क्षमता है। कुछ परिदृश्यों में यह विशेषता खासतौर पर सुविधाजनक है, क्योंकि यह स्पष्ट प्रकार घोषणा की ज़रूरत मिटा देती है। आगे मैं अपने काम में, यानी डेटाबेस में इस विशेषता का उपयोग कैसे करता हूँ, वह पेश करूँगा!

अभ्यास से सीखने के लिए, इस सेक्शन का पूरा सोर्स कोड 星球 पर अपलोड किया जाएगा, रुचि हो तो अंतिम पेज का QR कोड देखें।

C++17 में auto के साथ non-type टेम्प्लेट पैरामीटर

डेटाबेस परिदृश्य में सॉर्टिंग

एक डेटाबेस से संबंधित क्लास Foo पर विचार करें, जिसे आप enum द्वारा दर्शाए गए विशेष क्रम के अनुसार सॉर्ट करना चाहते हैं:

enum class SortOrder { Ascending, Descending };

आपके पास भिन्न सॉर्ट क्रम वाले Foo इंस्टेंस हैं:

Foo<SortOrder::Ascending> f1;
Foo<SortOrder::Descending> f2;

पहले का तरीका

C++17 से पहले, हम शायद ऐसे लागू करते थे:

template <typename U, template <U> class T, U K>
auto GetSortOrder(const T<K>&) {
  return K;
}

हालांकि, इससे त्रुटि हो सकती है, क्योंकि कंपाइलर टेम्प्लेट पैरामीटर 'U' का अनुमान नहीं लगा पाता।

अब का सरल तरीका

C++17 के बाद, non-type टेम्प्लेट पैरामीटर के लिए हम auto कीवर्ड से उसकी जगह ले सकते हैं:

template <template <auto> class T, auto K>
auto GetSortOrder(const T<K>&) {
  return K;
}

यह तरीका अधिक सरल है, जिससे हमें स्पष्ट रूप से प्रकार बताए बिना non-type टेम्प्लेट पैरामीटर का उपयोग करने की सुविधा मिलती है।

integral_constant का सरलीकरण

पहले, हम शायद इस तरह integral_constant लागू करते थे:

template <typename _Tp, _Tp __v>
struct integral_constant {}

जबकि अब केवल:

template <auto __v>
struct integral_constant {}

यह सरलीकरण कोड को अधिक स्पष्ट और पढ़ने योग्य बनाता है।

निष्कर्ष

C++17 द्वारा पेश auto कीवर्ड का non-type टेम्प्लेट पैरामीटर घोषणा में उपयोग टेम्प्लेट कोड को बहुत सरल बना देता है। थकाऊ प्रकार घोषणाएँ हटाकर, हम कोड के इरादे को अधिक सहज रूप से व्यक्त कर पाते हैं, जिससे कोड की पठनीयता और रखरखाव क्षमता बढ़ती है। सॉर्टिंग जैसे परिदृश्यों में यह विशेषता विशेष रूप से उपयोगी है, जो हमें टेम्प्लेट पैरामीटर के विवरणों की बजाय समस्या के मूल पर ध्यान केंद्रित करने देती है।

संबंधित विषय

टिप्पणियाँ