सामग्री पर जाएं
मॉड्यूल 4

टेम्पलेट और जेनेरिक प्रोग्रामिंग (Templates & Generic Programming)

टेम्पलेट, कॉन्सेप्ट और कंपाइल-टाइम प्रोग्रामिंग की मदद से सचमुच जेनेरिक, दोबारा इस्तेमाल होने वाले और शून्य-ओवरहेड एब्स्ट्रैक्शन लिखें।

टेम्पलेट की बुनियाद

  1. फ़ंक्शन टेम्पलेट और टाइप डिडक्शन

    ऐसे फ़ंक्शन लिखना सीखें जो किसी भी टाइप के साथ काम करें। टेम्पलेट आर्गुमेंट डिडक्शन, नॉन-टाइप पैरामीटर, और टेम्पलेट हेडर में क्यों रहते हैं — यह सब समझें।

  2. क्लास टेम्पलेट और CTAD

    क्लास टेम्पलेट से जेनेरिक डेटा स्ट्रक्चर बनाएँ। मेंबर डेफ़िनिशन, डिफ़ॉल्ट आर्गुमेंट, और C++17 का CTAD आपको टेम्पलेट आर्गुमेंट छोड़ने की सुविधा कैसे देता है — यह समझें।

एडवांस्ड टेम्पलेट (Advanced Templates)

  1. टेम्पलेट स्पेशलाइज़ेशन और टैग डिस्पैच

    फ़ुल और पार्शियल स्पेशलाइज़ेशन में महारत हासिल करें, जानें कि ओवरलोडिंग को कब प्राथमिकता देनी चाहिए, और कंपाइल-टाइम ब्रांचिंग के विकल्प के रूप में टैग डिस्पैच और if constexpr को समझें।

  2. वैरिएडिक टेम्पलेट और फ़ोल्ड एक्सप्रेशन (Variadic Templates & Fold Expressions)

    पैरामीटर पैक की मदद से किसी भी संख्या में टेम्पलेट आर्गुमेंट संभालें। रिकर्शन के बिना, सुरुचिपूर्ण ढंग से पैक प्रोसेस करने के लिए फ़ोल्ड एक्सप्रेशन में महारत हासिल करें।

  3. SFINAE, टाइप ट्रेट्स और enable_if

    Substitution Failure Is Not An Error सिद्धांत को समझें, कंपाइल-टाइम इंट्रोस्पेक्शन के लिए टाइप ट्रेट्स का उपयोग करें, और enable_if से टेम्पलेट को सीमित करें।

आधुनिक जेनेरिक प्रोग्रामिंग (Modern Generic Programming)

  1. C++20 कॉन्सेप्ट और कंस्ट्रेंट

    कॉन्सेप्ट की मदद से टेम्पलेट आर्गुमेंट पर सटीक आवश्यकताएँ तय करें। requires क्लॉज़, एब्रिविएटेड फ़ंक्शन टेम्पलेट और स्टैंडर्ड लाइब्रेरी कॉन्सेप्ट के साथ ज़्यादा साफ़-सुथरा जेनेरिक कोड लिखें।

  2. constexpr, consteval और कंपाइल-टाइम प्रोग्रामिंग

    constexpr, consteval और constinit की मदद से गणना को रनटाइम से कंपाइल टाइम पर ले जाएँ। लुकअप टेबल बनाएँ, कॉन्फ़िगरेशन वैलिडेट करें, और constexpr कंटेनर इस्तेमाल करें।

  3. टेम्पलेट मेटाप्रोग्रामिंग पैटर्न (Template Metaprogramming Patterns)

    एडवांस्ड टेम्पलेट पैटर्न में महारत हासिल करें: स्टैटिक पॉलीमॉर्फ़िज़्म के लिए CRTP, लचीली कंपोज़िशन के लिए पॉलिसी-आधारित डिज़ाइन, रनटाइम जेनेरिक्स के लिए टाइप इरेज़र, और यह मार्गदर्शन कि टेम्पलेट बनाम वर्चुअल डिस्पैच कब इस्तेमाल करें।