C++ Academy · पाठ

requires से Concepts परिभाषित करना

requires expressions और constraints से custom concepts परिभाषित करें।

पाठ 2, कुल 4 में से14 चरण

requires से Concepts परिभाषित करना, CoddyKit पर C++ Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह C++ Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

concept कीवर्ड

template <params> concept Name = expression; से कन्सेप्ट घोषित करें। यह व्यंजक संकलन-समय का बूलियन होना चाहिए।

template <typename T>
concept Integer = std::is_integral_v<T>;

प्रकार विशेषताओं का संयोजन

विशेषताओं को एक अवधारणा में संयोजित करने के लिए तार्किक ऑपरेटरों का उपयोग कीजिए।

template <typename T>
concept SignedInteger = std::is_integral_v<T> && std::is_signed_v<T>;

requires अभिव्यक्ति

अधिक अभिव्यंजक रूप: वे ऑपरेशन सूचीबद्ध कीजिए जिनका प्रकार द्वारा समर्थन किया जाना आवश्यक है।

template <typename T>
concept Addable = requires(T a, T b) {
    a + b;
};

संयुक्त आवश्यकताएँ

requires के भीतर, आप परिणाम प्रकार और अतिरिक्त प्रतिबंध निर्दिष्ट कर सकते हैं।

template <typename T>
concept Number = requires(T a, T b) {
    { a + b } -> std::convertible_to<T>;
    { a * b } -> std::convertible_to<T>;
};

नेस्टेड आवश्यकताएँ

नामित अवधारणाओं को शामिल करने के लिए requires अभिव्यक्ति के भीतर requires जोड़िए।

template <typename T>
concept Sortable = requires(T t) {
    { t.begin() };
    { t.end() };
    requires std::movable<typename T::value_type>;
};

प्रकार संबंधी आवश्यकताएँ

आप यह आवश्यक कर सकते हैं कि किसी प्रकार में कुछ नेस्टेड प्रकार या उपनाम हों।

template <typename T>
concept HasValueType = requires {
    typename T::value_type;
};

टेम्पलेट में अवधारणाओं का उपयोग

तीन वाक्य-विन्यास:

// 1. Replace typename
template <Integer T>
T increment(T x) { return x + 1; }

// 2. requires after template parameters
template <typename T>
    requires Integer<T>
T increment(T x) { return x + 1; }

// 3. requires after function signature
template <typename T>
T increment(T x) requires Integer<T> {
    return x + 1;
}

अवधारणाएँ और auto पैरामीटर

संक्षिप्त फ़ंक्शन टेम्पलेट पर भी प्रतिबंध लगाए जा सकते हैं।

void process(Integer auto x) { std::cout << x; }

एकाधिक प्रतिबंध

अवधारणाओं को && और || के साथ संयोजित कीजिए।

template <std::integral T, std::integral U>
    requires (sizeof(T) >= sizeof(U))
T promote(U value) { return static_cast<T>(value); }

नामकरण परंपराएँ

अधिकांश कोड अवधारणाओं के लिए CamelCase का उपयोग करते हैं। कुछ लाइब्रेरी छोटे अक्षरों का उपयोग करती हैं (जो मानक लाइब्रेरी के अनुरूप है)। कोई एक परंपरा चुनिए और उसी पर कायम रहिए।

क्लास टेम्पलेट में अवधारणाएँ

क्लास टेम्पलेट पर भी इसी तरह प्रतिबंध लगाइए।

template <std::integral T>
class Counter { T value_; /* ... */ };

पुनः उपयोग योग्य अवधारणाएँ

छोटी अवधारणाओं की एक लाइब्रेरी परिभाषित कीजिए और उन्हें संयोजित कीजिए। पुनः उपयोग योग्य अवधारणाएँ टेम्पलेट को स्वयं-दस्तावेज़ी और अनुरक्षण में आसान बनाती हैं।

त्वरित जाँच

requires अभिव्यक्ति के भीतर कौन-सा वाक्य-विन्यास जाँचता है कि a + b का परिणाम T में परिवर्तनीय है?

पुनरावलोकन

concept Name = expression के साथ अवधारणाएँ परिभाषित कीजिए। ऑपरेशन-आधारित प्रतिबंधों के लिए संयुक्त, नेस्टेड और प्रकार संबंधी आवश्यकताओं वाली requires अभिव्यक्तियों का उपयोग कीजिए। समृद्ध प्रतिबंध व्यक्त करने के लिए अवधारणाओं को && और || के साथ संयोजित कीजिए।

शुरुआत निःशुल्क

एआई शिक्षक के साथ C++ सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
51
पाठ
203

अक्सर पूछे जाने वाले प्रश्न

क्या “requires से Concepts परिभाषित करना” पाठ निःशुल्क है?

हाँ — C++ Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “requires से Concepts परिभाषित करना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“requires से Concepts परिभाषित करना” में मैं क्या सीखूँगा?

requires expressions और constraints से custom concepts परिभाषित करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C++ Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या C++ Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C++ Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“requires से Concepts परिभाषित करना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस C++ Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर C++ Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Concepts बनाम SFINAE क्यों
  2. requires से Concepts परिभाषित करना
  3. Templates और auto में Concepts का उपयोग
  4. सामान्य standard concepts: integral, ranges
← C++ Academy पर वापस जाएँ