सी ++ 20

सी++20 सी++ प्रोग्रामिंग भाषा के लिए मानकीकरण के लिए अंतर्राष्ट्रीय संगठन या अंतर्राष्ट्रीय इंटरनेशनल इलेक्ट्रोटेक्नीकल कमीशन मानक का एक संस्करण है। सी++20 ने सी++ मानक के पूर्व संस्करण को बदल दिया। जिसे सी++17 कहा जाता है। मानक को विधि रूप से अंतिम रूप दिया गया था। फरवरी 2020 में प्राहा में बैठक में आईएसओ/आईईसी जेटीसी 1/एससी 22 द्वारा 4 सितंबर 2020 को स्वीकृत किया गया और दिसंबर 2020 में प्रकाशित हुआ।

सुविधाएँ
सी++20 सी++14 या सी++17 की तुलना में अधिक नई प्रमुख विशेषताएं जोड़ता है। सी++20 में स्वीकार किए गए परिवर्तनों में भी सम्मिलित हैं।

भाषा

 * अवधारणाएं (सी ++) संक्षिप्त वाक्य रचना के साथ
 * मॉड्यूलर प्रोग्रामिंग
 * नामक प्रारंभकर्ता (सी99 फीचर और सामान्य जीएनयू संकलक संग्रह और जी++ एक्सटेंशन पर आधारित)
 * लैम्ब्डा कैप्चर के रूप में
 * लैम्ब्डा में टेम्पलेट पैरामीटर सूची
 * स्पेसशिप ऑपरेटर का उपयोग करके तीनों ओर की तुलना करना,
 * एक श्रेणी-आधारित के अन्दर एक अतिरिक्त चर का आरंभीकरण  कथन
 * बिना मूल्यांकित संदर्भों में लैम्ब्डा
 * डिफ़ॉल्ट रचनात्मक और असाइन करने योग्य स्टेटलेस लैम्ब्डा
 * लैम्ब्डा इनिट-कैप्चर में पैक विस्तार की अनुमति दें
 * गैर-प्रकार के टेम्पलेट पैरामीटर में वर्ग प्रकार स्ट्रिंग अक्षर को टेम्पलेट पैरामीटर के रूप में भी अनुमति देता है।
 * कुछ निश्चित परिस्थितियों में  की आवश्यकता को दूर करना
 * नए मानक गुण,   और
 * नियमानुसार  अनुमति देता है।   एक बूलियन अभिव्यक्ति पर आकस्मिक होने के लिए संशोधक है।
 * विस्तारित : आभासी कार्य, ,   और  ,   और  ,
 * नए  कीवर्ड का उपयोग कर तत्काल कार्य करता है।
 * हस्ताक्षरित पूर्णांक अब दो के पूरक का उपयोग करके दर्शाए जाने के लिए परिभाषित किए गए हैं (हस्ताक्षरित पूर्णांक अतिप्रवाह अपरिभाषित व्यवहार रहता है)।
 * एक संशोधित स्मृति मॉडल
 * संरचित बाइंडिंग में विभिन्न सुधार (लैम्ब्डा कैप्चर के साथ सहभागिता,  और   भंडारण अवधि)
 * कोरूटीन
 * के अन्तर्गत s
 * कीवर्ड

पुस्तकालय

 * पर्वतमाला (एक श्रेणी प्रस्ताव)
 * और  सरणियों के लिए
 * एटॉमिक स्मार्ट पॉइंटर्स (जैसे  और  )
 * एक सूचक को कच्चे सूचक में बदलने के लिए
 * कैलेंडर और समय-क्षेत्र के अतिरिक्त
 * एक सन्निहित सारणी के लिए एक दृश्य प्रदान करता है। (संदर्भित अनुक्रम को    के अनुरूप बदल सकते हैं।)
 * और  अधिकांश मानक कंटेनरों के लिए तत्व विलोपन को सरल बनाना
 * हैडर
 * से कम शब्द भंडार के साथ वस्तु निरूपण के प्रकार, कास्टिंग के लिए  और कंपाइलर इंटर्नल्स का लाभ लेने की अधिक क्षमता
 * फीचर टेस्ट मैक्रोज़
 * विभिन्न कॉन्स्टेक्स लाइब्रेरी बिट्स
 * डिफॉल्ट इनिशियलाइज़ेशन के साथ स्मार्ट पॉइंटर क्रिएशन
 * सहयोगी कंटेनरों के लिए विधि
 * बिट ऑपरेशंस जैसे लीडिंग/ट्रेलिंग ज़ीरो/वन काउंट और लॉग 2 ऑपरेशंस

नए और परिवर्तित कीवर्ड्स
कई नए कीवर्ड जोड़े गए और नया स्पेसशिप ऑपरेटर ) जैसे कि ,  ,  ,  ,  ,  ,   (प्लस के लिए परिवर्तित अर्थ  ) और   (यूटीएफ-8 समर्थन के लिए) और   सी ++ 20 के बाद से अभिव्यक्ति को ग्रहण कर सकता है। इसके अधिकांश उपयोग   कीवर्ड को बहिष्कृत कर दिया गया है।

खोजशब्दों के अतिरिक्त नए विशेष अर्थ वाले पहचानकर्ता भी हैं।  और. सी ++ 20 में नई विशेषताएँ:, , और  हैं।

हटाया और पदावनत किया
हटाई गई विशेषताएं:
 * सी (प्रोग्रामिंग भाषा)-व्युत्पन्न हेडर,  ,  ,   और   हटा दिए गए क्योंकि वे सी++ में कोई उद्देश्य पूरा नहीं करते। इसी   सी के साथ अनुकूलता के लिए हेडर बने रहते हैं।
 * का उपयोग एक अपवाद विनिर्देश के रूप में हटा दिया गया था।
 * कुछ पूर्व में पदावनत पुस्तकालय सुविधाओं को हटा दिया गया था> जिनमें सम्मिलित हैं,  ,  ,  ,   और.

बहिष्कृत विशेषताएं:


 * सबस्क्रिप्ट एक्सप्रेशन में कॉमा ऑपरेटर का उपयोग बहिष्कृत कर दिया गया है
 * को बहिष्कृत किया गया है।

विधि विशिष्टताओं के रूप में प्रकाशित

 * समानता टीएस वी2 (टास्क ब्लॉक सहित )
 * प्रतिबिंब टीएस वी1
 * नेटवर्किंग टीएस वी1

बाद के मानक के लिए स्थगित


 * अनुबंध एक नए प्रस्ताव पर काम करने के लिए एक नया अध्ययन समूह (एसजी21) बनाया गया है।
 * प्रतिबिंब
 * मेटाक्लास
 * निष्पादक
 * नेटवर्किंग एक्सटेंशन, एसिन, मूलभूत आई/ओ सेवाओं, टाइमर, बफ़र्स और बफर-ओरिएंटेड स्ट्रीम, सॉकेट्स और इंटरनेट प्रोटोकॉल (निष्पादकों द्वारा अवरुद्ध) सहित।
 * गुण
 * विस्तारित प्रतिज्ञा

संकलक समर्थन
पूर्ण समर्थन माइक्रोसॉफ्ट का कंपाइलर केवल विंडोज, लिनक्स (और जैसे एंड्रॉइड और आईओएस) का समर्थन नहीं करता है। किन्तु इसके लिए लिनक्स डेवलपमेंट एक्सटेंशन के लिए विज़ुअल सी ++ की आवश्यकता होती है।
 * माइक्रोसॉफ्ट विजुअल स्टूडियो 2019 इसके माध्यम से सभी सी++20 सुविधाओं का समर्थन करता है।  विकल्प संस्करण 16.10.0 के अनुसार एक विकल्प   सी++20 मोड को सक्षम करने के लिए संस्करण 16.11.0 में जोड़ा गया है।  प्रोजेक्ट गुण → कॉन्फ़िगरेशन गुण → सी/सी ++ → भाषा → सी ++ भाषा मानक।
 * बजना में कम सी++20 समर्थन है। जिसे विकल्प के साथ सक्षम किया जा सकता है।  (संस्करण 10 और बाद में) या   (संस्करण 9 और पूर्व)।
 * एडिसन प्रारूप समूह ने संस्करण 5.0 में सी++20 सुविधाओं को प्रयुक्त करना प्रारम्भ किया और संस्करण 6.1 के रूप में अधिकांशतः सी++20 कोर भाषा सुविधाओं का समर्थन करता है।
 * जीएनयू संकलक संग्रह ने 2017 में आंशिक, प्रयोगात्मक सी++20 समर्थन जोड़ा और विकल्प के माध्यम से संस्करण 8 में  क्लैंग के अनुसार जीसीसी ने इस विकल्प को   संस्करण 10 में भी जोड़ा। इसमें प्रायोगिक सी++20 समर्थन के अतिरिक्त जीएनयू एक्सटेंशन को सक्षम करने का विकल्प भी है।.

इतिहास
जुलाई 2017 (टोरंटो) में सी++20 वर्किंग ड्राफ्ट में प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं:
 * अवधारणाएँ (सी++) (जिसने इसे मानक में बनाया। वह एक कट-डाउन संस्करण है। इसे कॉन्सेप्ट लाइट के रूप में भी वर्णित किया गया है। )
 * नामक प्रारंभकर्ता
 * लैम्ब्डा कैप्चर के रूप में
 * लैम्ब्डा पर टेम्पलेट पैरामीटर सूची
 * और  सारणियों के लिए

नवंबर 2017 (अल्बुकर्क) में कमी की बैठक में सी ++ 20 वर्किंग ड्राफ्ट में प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं:
 * स्पेसशिप ऑपरेटर का उपयोग करके तीनों ओर की तुलना,
 * एक श्रेणी-आधारित के अन्दर एक अतिरिक्त चर का आरंभीकरण  कथन
 * बिना मूल्यांकित संदर्भों में लैम्ब्डा
 * डिफ़ॉल्ट रचनात्मक और असाइन करने योग्य स्टेटलेस लैम्ब्डा
 * लैम्ब्डा इनिट-कैप्चर में पैक विस्तार की अनुमति दें
 * स्ट्रिंग शाब्दिक टेम्पलेट पैरामीटर के रूप में
 * एटॉमिक स्मार्ट पॉइंटर्स (जैसे  और  )
 * एक सूचक को कच्चे सूचक में बदलने के लिए

मार्च 2018 (जैक्सनविले) में सी ++ 20 वर्किंग ड्राफ्ट में प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं:
 * कुछ निश्चित परिस्थितियों में की आवश्यकता को दूर करना ।
 * नए मानक गुण,   और
 * कैलेंडर और समय-क्षेत्र के अतिरिक्त
 * एक सन्निहित सारणी के लिए एक दृश्य प्रदान करता है। (संदर्भित अनुक्रम के अनुरूप    को बदल सकते हैं।)
 * हैडर

जून 2018 (रैपर्सविल) में ग्रीष्मकालीन बैठक में सी ++ 20 वर्किंग ड्राफ्ट में प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं:
 * अनुबंध (सी++20 बाद के मानक के लिए स्थगित)
 * फीचर टेस्ट मैक्रोज़
 * वस्तु अभ्यावेदन की बिट-कास्टिंग से कम वाचालता के साथ  और कंपाइलर इंटर्नल्स का लाभ लेने की अधिक क्षमता
 * सशर्त, स्पष्ट संशोधक को बूलियन अभिव्यक्ति पर आकस्मिक होने की अनुमति देता है
 * विपक्ष आभासी कार्य करता है।

नवंबर 2018 (सैन डिएगो) में कमी की बैठक में सी ++ 20 वर्किंग ड्राफ्ट में प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं:
 * पर्वतमाला (एक श्रेणी प्रस्ताव)
 * अवधारणा संक्षिप्त वाक्य रचना
 * ,  और ,  ,   और.
 * विभिन्न  लाइब्रेरी बिट्स
 * कीवर्ड नए का उपयोग कर तत्काल कार्य करता है।
 * हस्ताक्षरित पूर्णांक अब दो के पूरक का उपयोग करके दर्शाए जाने के लिए परिभाषित किए गए हैं। (हस्ताक्षरित पूर्णांक अतिप्रवाह अपरिभाषित व्यवहार रहता है)
 * अनुबंध सुविधा का परिशोधन (अनुबंध शर्तों में अभिगम नियंत्रण) (सी ++ 20 की सूची देखें बाद के मानक के लिए स्थगित)
 * एक संशोधित स्मृति मॉडल
 * डिफॉल्ट इनिशियलाइज़ेशन के साथ स्मार्ट पॉइंटर क्रिएशन

फरवरी 2019 (कोना) में शीतकालीन बैठक में सी++20 वर्किंग ड्राफ्ट में प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं:
 * कोरआउटिन
 * मॉड्यूलर प्रोग्रामिंग
 * संरचित बाइंडिंग में विभिन्न सुधार (लैम्ब्डा कैप्चर के साथ सहभागिता,  और   भंडारण अवधि)

जुलाई 2019 (कोलोन) में ग्रीष्मकालीन बैठक में सी++20 वर्किंग ड्राफ्ट में प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं: नवंबर 2019 (बेलफास्ट) में फॉल मीटिंग में एनबी टिप्पणी प्रस्ताव के समय प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं:
 * अनुबंध हटा दिए गए थे (सी ++ 20 की सूची देखें बाद के मानक के लिए स्थगित)
 * सबस्क्रिप्ट एक्सप्रेशंस में कॉमा ऑपरेटर का उपयोग बहिष्कृत कर दिया गया है
 * अतिरिक्त (तुच्छ डिफ़ॉल्ट प्रारंभिकरण, अमूल्यांकित इनलाइन-असेंबली )
 * दायरे का उपयोग करना s
 * स्पेसशिप ऑपरेटर में विभिन्न परिवर्तन
 * डॉ: मॉड्यूल में न्यूनतम बदलाव
 * कीवर्ड
 * अवधारणाओं में परिवर्तन (निकालना  वापसी-प्रकार-आवश्यकताएं )
 * (के सबसे)  बहिष्कृत किया गया है
 * डॉ:  निर्माणकर्ताओं पर प्रभाव
 * नई मानक पुस्तकालय अवधारणाएँ पास्कलकेस का उपयोग नहीं करेंगी (किन्तु  शेष मानक पुस्तकालय के रूप में)
 * पाठ स्वरूपण (  एकीकर कोने की स्थिति सही करता है। )
 * बिट ऑपरेशंस
 * गणित स्थिरांक
 * परमाणुओं के लिए संगति परिवर्धन
 * जोड़ें  मानक पुस्तकालय के लिए ऑपरेटर
 * मानक पुस्तकालय के लिए हेडर इकाइयां
 * तुल्यकालन सुविधाएं ( कुशल परमाणु प्रतीक्षा और सेमाफोर, कुंडी और अवरोध, में सुधार, छोटे सीपीयू पर सी++ को प्रयुक्त करने योग्य न बनाएं )
 * कंटेनर
 * और धागे में सम्मिलित होना
 * कंटेनर
 * और धागे में सम्मिलित होना
 * गैर-प्रकार टेम्पलेट पैरामीटर्स (एनटीटीपी) में वर्ग प्रकार: उपयोगकर्ता परिभाषित नहीं होने का प्रतिबंध  अनुमति को हटा दिया गया है क्योंकि टेम्पलेट तर्क समानता का अर्थ स्वयं से अलग कर दिया गया है।  यह वर्ग-प्रकार एनटीटीपी में सारणी सदस्यों के लिए भी अनुमति देता है।
 * फ़्लोटिंग-पॉइंट प्रकार पॉइंटर्स और संदर्भ और यूनियन और यूनियन-जैसी कक्षाएं (गुमनाम यूनियनों वाले वर्ग प्रकार) को अब एनटीटीपी के रूप में अनुमति दी गई है।
 * फलन पहचान में अब अनुगामी आवश्यकताएं-खंड (पी1971) भी सम्मिलित हैं।
 * प्रतिबंधित गैर-टेम्प्लेट फलन हटा दिए गए हैं।
 * अब फ्रीस्टैंडिंग कार्यान्वयन में उपलब्ध है।
 * s टाइपडेफ से बदल दिया गया था।  को   शेष मानक पुस्तकालय के अनुरूप होना चाहिए।
 * कोलोन बैठक के परिणामस्वरूप अवधारणाओं के नामकरण का पालन करने के लिए संकल्पना लक्षणों का नाम बदल दिया गया है।
 * श्रेणियों में कई सुधार और परिवर्धन (पी1456आर1: मूव-ओनली व्यूज, पी1391आर4: के लिए रेंज कंस्ट्रक्टर  (पात्रों की इटरेटर-जोड़ी से निर्माता), पी1394आर4: के लिए रेंज कंस्ट्रक्टर , पी1870आर1: अग्रेषण-श्रेणी बहुत सूक्ष्म है। )
 * के लिए आरंभीकरण इसे डिफ़ॉल्ट और सूची आरंभीकरण के साथ काम करने के लिए बदल दिया गया है।  और   अब नए सदस्य फलन के माध्यम से कार्यान्वयन द्वारा समर्थित थ्रेड्स की अधिकतम संख्या   को रिपोर्ट कर सकते हैं।
 * और  उपयोग में न होने के कारण इन्हें हटा दिया गया है।
 * में एल्गोरिदम  बनाया गया है।
 * सी++20 के नए या बदले हुए फीचर के लिए मिसिंग फीचर-टेस्ट मैक्रोज़ जोड़े गए हैं।

बाहरी संबंध

 * Link to purchase ISO/IEC 14882:2020 from the ISO online store.
 * N4860, the final draft version of the standard.
 * JTC1/SC22/WG21 – the ISO/IEC सी++ Standard Working Group (a.k.a. the सी++ Standards Committee)
 * Ranges (range-v3) GitHub repository, by Eric Niebler