C++ Academy · पाठ

consteval और constinit

आधुनिक संकलन-समय कीवर्ड

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

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

constexpr से आगे

C++20 कंपाइल-समय प्रोग्रामिंग को अधिक सटीक बनाने वाले दो कीवर्ड जोड़ता है: गारंटीकृत कंपाइल-समय फ़ंक्शन के लिए consteval और गारंटीकृत कंपाइल-समय आरंभीकरण के लिए constinit।

consteval: तत्काल फ़ंक्शन

consteval फ़ंक्शन का मूल्यांकन कंपाइल समय पर अनिवार्य रूप से होना चाहिए। constexpr के विपरीत, यह कभी भी रनटाइम पर नहीं चल सकता।

consteval int cube(int x) {
    return x * x * x;
}

int main() {
    constexpr int c = cube(3);   // OK: compile time
    return c;
}

consteval रनटाइम कॉल अस्वीकार करता है

रनटाइम मान के साथ consteval फ़ंक्शन को कॉल करना कंपाइल त्रुटि है—यह आश्वासन अनिवार्य रूप से लागू किया जाता है।

consteval int cube(int x) { return x * x * x; }

int main() {
    int n = 4;
    // int bad = cube(n);   // ERROR: n is not a constant
    return cube(2);
}

consteval क्यों?

इसका उपयोग तब कीजिए जब कोई गणना रनटाइम पर अर्थहीन हो—उदाहरण के लिए, स्थिर टेबल बनाते समय या कंपाइल समय पर किसी लिटरल का सत्यापन करते समय।

constexpr और consteval में अंतर

constexpr फ़ंक्शन कंपाइल समय पर चल सकते हैं; consteval फ़ंक्शन हमेशा वहीं चलते हैं। आकस्मिक रनटाइम उपयोग रोकने के लिए consteval चुनिए।

constinit: गारंटीकृत स्थिर आरंभीकरण

constinit यह गारंटी देता है कि किसी स्थिर या थ्रेड-स्थानीय वैरिएबल का आरंभीकरण कंपाइल समय पर होगा, जिससे स्थिर आरंभीकरण क्रम की समस्या समाप्त हो जाती है।

constinit int globalCount = 10;   // initialized at compile time

int main() {
    return globalCount;
}

constinit, const नहीं है

constexpr के विपरीत, constinit वैरिएबल को कंपाइल-समय आरंभीकरण के बाद भी बदला जा सकता है—यह केवल आरंभीकरण के तरीके पर सीमा लगाता है।

constinit int counter = 0;

int main() {
    counter = 5;   // OK: constinit allows mutation
    return counter;
}

आरंभीकरण-क्रम की समस्या का समाधान

अनुवाद इकाइयों में मौजूद गैर-स्थानीय स्थिरांकों के लिए constinit स्थिर (कंपाइल-समय) आरंभीकरण लागू करता है, इसलिए कोई भी गतिशील आरंभीकरण चलने से पहले मान तैयार होता है।

तीन कीवर्ड की तुलना

constexpr: कंपाइल समय पर हो सकता है और const होता है। consteval: कंपाइल समय पर होना अनिवार्य है (फ़ंक्शन के लिए)। constinit: कंपाइल-समय आरंभीकरण लागू करता है और वैरिएबल को परिवर्तनीय रखता है।

कंपाइलर का समर्थन

ये C++20 की सुविधाएँ हैं। GCC/क्लैंग पर -std=c++20 (या बाद का संस्करण) और MSVC पर /std:c++20 के साथ कंपाइल कीजिए।

सही साधन चुनना

कंपाइल-समय गणना लागू करने के लिए consteval और स्थिर आरंभीकरण को नियतात्मक बनाने के लिए constinit अपनाइए—दोनों मिलकर कंपाइल-समय C++ को अधिक सुरक्षित बनाते हैं।

त्वरित जाँच

consteval और constinit के बारे में अपनी समझ का परीक्षण कीजिए।

पुनरावलोकन

आपने C++20 के कीवर्ड consteval (वे फ़ंक्शन जिन्हें कंपाइल समय पर चलना अनिवार्य है) और constinit (स्थिरांकों के लिए गारंटीकृत कंपाइल-समय आरंभीकरण, जबकि वे परिवर्तनीय रहते हैं) सीखे। constexpr के साथ मिलकर ये कंपाइल-समय मूल्यांकन पर सटीक नियंत्रण देते हैं।

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

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

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

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

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

क्या “consteval और constinit” पाठ निःशुल्क है?

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

“consteval और constinit” में मैं क्या सीखूँगा?

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

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

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

“consteval और constinit” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. const चर और पैरामीटर
  2. const सदस्य फ़ंक्शन
  3. constexpr और संकलन-समय
  4. consteval और constinit
← C++ Academy पर वापस जाएँ