सी ++ 23

सी++23, सी++ प्रोग्रामिंग भाषा के लिए मानकीकरण या अंतर्राष्ट्रीय इंटरनेशनल इलेक्ट्रोटेक्नीकल कमीशन मानक के लिए अंतर्राष्ट्रीय संगठन के अगले संस्करण के लिए अनौपचारिक नाम है। जो  सी++20 का पालन करेगा। वर्तमान वार्तालाप एन4928 है। फरवरी 2020 में प्राग में  सी++20 के लिए अंतिम बैठक में  सी++23 के लिए एक समग्र योजना को अपनाया गया था।  सी++23 के लिए योजनाबद्ध विशेषताएं कॉरूटाइन के लिए पुस्तकालय समर्थन, मॉड्यूलर प्रोग्रामिंग मानक पुस्तकालय, निष्पादक और नेटवर्किंग हैं।

सी++23 पर केंद्रित पहली डब्लू21 बैठक जून 2020 के प्रारम्भ में वर्ना बुल्गारिया में सम्पन्न होने वाली थी। किन्तु कोविड-19 महामारी के कारण स्थगित कर दी गई थी। जैसा कि न्यूयॉर्क शहर में नवंबर 2020 की बैठक थी और कोना हवाई में फरवरी 2021 की बैठक। नवंबर 2022 तक सभी मीटिंग वर्चुअल माध्यम से सम्पन्न की गयी, जबकि नवंबर 2022 की मीटिंग हाइब्रिड रूप से सम्पन्न की गयी थी।

नई सुविधाएँ
डब्लूजी21 बैठकों की अनुपस्थिति में सी++23 की वार्तालाप में अब तक कुछ नई सुविधाएँ जोड़ी गई हैं। किन्तु 9 नवंबर 2020 की वर्चुअल डब्लूजी21 बैठक के बाद निम्नलिखित जोड़े गए। जहां उन्हें स्ट्रॉ पोल द्वारा अनुमोदित किया गया: 22 फरवरी 2021 की वर्चुअल डब्लूजी21 बैठक के बाद निम्नलिखित विशेषताएं जोड़ी गई हैं। जहां उन्हें स्ट्रॉ पोल द्वारा अनुमोदित किया गया था: जून 2021 की गर्मियां आईएसओ सी ++ मानकों पूर्ण आभासी बैठक के बाद नई सुविधाओं और दोष रिपोर्ट को स्ट्रॉ पोल द्वारा अनुमोदित किया गया था। अक्टूबर 2021 की शरद ऋतु 2021 आईएसओ सी ++ मानकों की पूर्ण आभासी बैठक के बाद, नई सुविधाओं और दोष रिपोर्ट को स्ट्रॉ पोल द्वारा अनुमोदित किया गया था: 7 फरवरी 2022 की वर्चुअल WG21 बैठक के बाद, निम्नलिखित विशेषताएं जोड़ी गई हैं जहां उन्हें स्ट्रॉ पोल द्वारा अनुमोदित किया गया था: 25 जुलाई 2022 की आभासी WG21 बैठक के बाद, निम्नलिखित विशेषताएं और दोष रिपोर्टें जोड़ी जाती हैं, जहां उन्हें स्ट्रॉ पोल द्वारा अनुमोदित किया गया था:
 * के लिए शाब्दिक प्रत्यय और संबंधित हस्ताक्षरित प्रकार।
 * सदस्य समारोह contains के लिए std::basic_string और std::basic_string_view यह जांचने के लिए कि स्ट्रिंग में दिया गया सबस्ट्रिंग या वर्ण है या नहीं।
 * स्टैक ट्रेस लाइब्रेरी (cpp), बूस्ट ( सी++ लाइब्रेरी) पर आधारित है।
 * एक प्रकार का गुण std::is_scoped_enum
 * शीर्षलेख , सी (प्रोग्रामिंग लैंग्वेज) एटॉमिक्स के साथ इंटरऑपरेबिलिटी के लिए
 * इनपुट रेंज एडेप्टर की सुरक्षा और counted_iterator.
 * अनाम समारोह से अनावश्यक खाली पैरामीटर सूची को हटाना ।
 * time_point::clock के लिए आवश्यकताओं को आराम दें।.
 * std::visit से प्राप्त कक्षाओं के लिए std::variant.
 * ताला।
 * नियमानुसार उधार ली गई सीमाएँ।
 * std::to_underlying.
 * संविधान अगर (if consteval).
 * प्रासंगिक रूपांतरणों को कम करना bool.
 * डुप्लिकेट विशेषताओं की अनुमति देना।
 * std::span-आधारित स्ट्रिंग-स्ट्रीम (cpp).
 * std::out_ptr और std::inout_ptr.
 * कॉन्स्टेक्सप्र|constexprके लिए std::optional, std::variant, और std::type_info::operator==.
 * इटरेटर्स जोड़ी के लिए कंस्ट्रक्टर std::stack (स्टैक (अमूर्त डेटा प्रकार)) और std::queue (कतार (सार डेटा प्रकार))।
 * रेंज लाइब्रेरी में कुछ बदलाव:
 * सामान्यीकृत starts_with और ends_with मनमानी श्रेणियों के लिए।
 * नाम बदला split_view को lazy_split_view और नया split_view.
 * join_view प्रतिबंध को शिथिल करना।
 * default_initializable अवधारणा से बाधा view निकाल रहा है।
 * रेंज कंस्ट्रक्टर के लिए std::basic_string_view.
 * निषेध करना std::basic_string और std::basic_string_view नलप्टर से निर्माण nullptr.
 * std::invoke_r.
 * std::format सुधार जारी है।
 * std::pairका अग्रेषण कन्स्ट्रक्टर के लिए डिफ़ॉल्ट तर्क जोड़ना।
 * गैर-शाब्दिक चर, लेबल और गोटो इन constexpr कार्य। किन्तु संकलन-समय पर उनका मूल्यांकन करने के लिए अभी भी बीमार हैं।
 * |thisवस्तु पैरामीटर इसे स्पष्ट करें (कंप्यूटर प्रोग्रामिंग)
 * कैरेक्टर सेट और एनकोडिंग में बदलाव।
 * नए प्रीप्रोसेसर: #elifdef और #elifndef. दोनों निर्देश सी2एक्स (सी भाषा अद्यतन) और जीएनयू संकलक संग्रह 12 में जोड़े गए थे।
 * इनिट-स्टेटमेंट में अन्य घोषणाओं की अनुमति देना।
 * ओवरलोडिंग बहुआयामी सबस्क्रिप्ट ऑपरेटर (उदा। arr[1, 2]).
 * भाषा में क्षय प्रति: auto(x) या auto{x }.
 * पाठ स्वरूपण पुस्तकालय में परिवर्तन:
 * क्रोनो फॉर्मेटर्स में लोकेल हैंडलिंग को ठीक करना।
 * अनुमति देने के लिए प्रारूप तर्कों में अग्रेषण संदर्भों का उपयोग, जैसे std::generator प्रकार।
 * std::pmr::stacktrace प्रकार उपनाम का जोड़, जो std::basic_stacktrace के बराबर है।
 * रेंज लाइब्रेरी में बदलाव:
 * एक दृश्य की परिष्कृत परिभाषा।
 * फलन टेम्पलेट को बदलना std::ranges::istream_view उपनाम टेम्पलेट्स के साथ std::ranges::istream_view, std::ranges::wistream_view और अनुकूलन बिंदु वस्तु std::views::istream
 * zip रेंज अनुकूलक परिवार:
 * zip_view
 * zip_transform_view
 * adjacent_view (और std::views::pairwise के समकक्ष होना std::views::adjacent<2>)
 * adjacent_transform_view (और std::views::pairwise_transform के समकक्ष होना std::views::adjacent_transform<2>)
 * std::move_only_function
 * मोनाड (कार्यात्मक प्रोग्रामिंग) के लिए संचालन std::optional
 * सदस्य समारोह टेम्पलेट std::basic_string::resize_and_overwrite.
 * मुद्रण अस्थिर (कंप्यूटर प्रोग्रामिंग) और volatileसंकेतक (volatile T*).
 * std::byteswap.
 * साहचर्य कंटेनरों के लिए विषम विलोपन अधिभार।
 * की हर विशेषज्ञता std::span और std::basic_string_view तुच्छ रूप से कॉपी करने योग्य है।
 * सशर्त जोड़ना noexcept विनिर्देशों के लिए std::exchange.
 * पुर्नोत्थान विनिर्देश और पूर्णांक-वर्ग प्रकारों का उपयोग।
 * सी हेडर स्पष्ट करें। शीर्षलेख कोड में उपयोगी नहीं हैं जो केवल वैध सी ++ होना आवश्यक है। इसलिए, सी हेडर को सी ++ मानक लाइब्रेरी द्वारा पूरी तरह से समर्थित, बहिष्कृत भाग के रूप में प्रदान नहीं किया जाना चाहिए, किन्तु उन्हें कोड में उपयोग के लिए भी निराश होना चाहिए जो पॉलीग्लोट इंटरऑपरेबिलिटी कोड नहीं है। [..] यह प्रस्ताव सी हेडर को अब बहिष्कृत नहीं करता है, इसलिए भविष्य में हटाने का कोई औपचारिक खतरा नहीं है। शुद्ध सी++ कोड में C हेडर का उपयोग करने के लिए प्रभावी हतोत्साहन अब स्पष्ट रूप से मानक हतोत्साहन के रूप में लिखा गया है।
 * std::expected
 * constexpr के लिए  और
 * अगम्य कोड को चिह्नित करने का कार्य
 * ranges::to
 * अस्थायी के लिए बाध्यकारी संदर्भ का पता लगाने के लिए एक प्रकार की विशेषता
 * बनाना std::unique_ptr constexpr
 * उपयोगकर्ता परिभाषित रेंज एडेप्टर के लिए पाइप समर्थन
 * ranges::iota, ranges::shift_left और ranges::shift_right
 * views::join_with
 * वाइंडिंग रेंज एडेप्टर: views::chunk और views::slide
 * views::chunk_by
 * भावों में पुनर्लेखन समानता को ब्रेकिंग परिवर्तन से कम बनाया।
 * बिटवाइज़ असाइनमेंट के बहिष्करण को वापस कर दिया volatile चर।
 * जोड़ा गया #warning प्रक्रमण करने से पहले के निर्देश।
 * नॉन-एन्कोडेबल वाइड अक्षर शाब्दिक और मल्टीकैरेक्टर वाइड कैरेक्टर लिटरल हटाए गए।
 * अनुमत लेबल (कंप्यूटर विज्ञान) कंपाउंड स्टेटमेंट के अंत में प्रदर्शित होने के लिए।
 * ऑक्टल और हेक्साडेसिमल संख्याओं और सार्वभौमिक चरित्र नामों के लिए कर्ली ब्रेसिज़ के साथ सीमांकित बचने का क्रम जोड़े गए।
 * अनुमत constexpr कार्य कभी भी स्थिर अभिव्यक्ति नहीं होते हैं।
 * सी ++ 20 से कुछ निहित चाल नियमों को सरल बनाया और एक प्रतिद्वंद्विता संदर्भ वापस करते समय निहित चाल की अनुमति दी।
 * यूनिकोड वर्णों को नाम से निर्दिष्ट करने का एक तरीका जोड़ें। उदाहरण के लिए, U'\N{LATIN CAPITAL LETTER A WITH MACRON}' // Equivalent to U'\u0100'
 * सी और सी ++ में अनुमत ऑपरेटर operator स्थिर होना (कीवर्ड) |static.
 * अनुमति दी  सूचक (कंप्यूटर विज्ञान) और अज्ञात मूल के संदर्भ (सी ++) निरंतर अभिव्यक्तियों में प्रकट होने के लिए।
 * तीन मानक तैरनेवाला स्थल प्रकारों के अतिरिक्त विस्तारित फ़्लोटिंग-पॉइंट प्रकारों को परिभाषित करने के लिए अनुमत कार्यान्वयन। उपनाम प्रकार जोड़ा गया,  ,  ,  ,   इन विस्तारित प्रकारों के लिए शीर्ष लेख के माध्यम से पहुँचा जा सकता है  , उनके संबंधित शाब्दिक प्रत्यय          या           और तर्क के रूप में फ्लोट लेने वाले विभिन्न मानक पुस्तकालय कार्यों में अधिभार जोड़ा गया।
 * जोड़ा गया assume(expression) विशेषता जो संकलक को प्रदान की गई अभिव्यक्ति को मानने की अनुमति देती है, अनुकूलन की अनुमति देने के लिए सही है।
 * स्रोत फ़ाइलों के लिए एक पोर्टेबल एन्कोडिंग प्रदान करते हुए, UTF-8 स्रोत फ़ाइलों के लिए समर्थन को अनिवार्य बनाया।
 * की अनुमत सरणियाँ char और unsigned char UTF-8 शाब्दिक स्ट्रिंग के साथ इनिशियलाइज़ किया जाना है।
 * wchar_t | की आवश्यकता को हटा दियाwchar_tविस्तृत वर्ण सेट के सभी वर्णों को एनकोड कर सकता है, प्रभावी रूप से UTF-16 को विस्तृत स्ट्रिंग शाब्दिक के लिए उपयोग करने की अनुमति देता है।
 * जोड़ा गया, एक बहुआयामी सरणी दृश्य के अनुरूप.
 * flat_map और flat_set मानक पुस्तकालय में जोड़े गए थे।
 * जोड़ा गया std::print और std::println स्वरूपित पाठ को stout में प्रिंट करने के लिए कार्य करता है।
 * नामित मॉड्यूल प्रदान करें std और std.compat मानक पुस्तकालय आयात करने के लिए।
 * अनन्य मोड के लिए समर्थन जोड़ा गया, x फ्लैग इन के अनुरूप.
 * अनुमत  रेंज को संभालने के लिए।
 * निर्मित  चाल शब्दार्थ का प्रयोग करें।
 * जोड़ा गया std::generator जो एक कॉरूटिन जनरेटर को लागू करता है जो मॉडल करता है std::ranges::input_range

7 नवंबर 2022 की हाइब्रिड WG21 बैठक के बाद, निम्नलिखित विशेषताएं और दोष रिपोर्टें जोड़ी जाती हैं, जहां उन्हें स्ट्रॉ पोल द्वारा अनुमोदित किया गया था:
 * अनुमत ऑपरेटर operator[] होना static.
 * अनुमत static और थ्रेड-लोकल स्टोरेज |thread_localमें दिखाई देने वाले चर constexpr कार्य करता है अगर वे निरंतर अभिव्यक्तियों में प्रयोग योग्य हैं।
 * कॉन्स्टेवल|constevalऊपर की ओर फैलता है, यानी कुछ मौजूदा constexpr कार्य बन जाते हैं consteval कार्य करता है जब उन कार्यों को पहले से ही संकलन समय के दौरान ही लागू किया जा सकता है।
 * रेंज-आधारित के फॉर-रेंज-इनिशियलाइज़र में दिखाई देने वाले टेम्परेरी के जीवनकाल को बढ़ाया for पूरे लूप को कवर करने के लिए लूप।
 * मोनाड (कार्यात्मक प्रोग्रामिंग) के लिए कार्य करता है std::expected.
 * के आउटपुट को सिंक्रनाइज़ करें std::print अंतर्निहित स्ट्रीम के साथ यदि देशी यूनिकोड एपीआई का उपयोग किया जाता है।
 * यौगिक असाइनमेंट (सभी, न केवल बिटवाइज़) के अपवर्जन को वापस कर दिया volatile चर।
 * यौगिक असाइनमेंट (सभी, न केवल बिटवाइज़) के अपवर्जन को वापस कर दिया volatile चर।

हटाई गई और पदावनत सुविधाएँ

 * सी++ के लिए कई GC कार्यान्वयन उपलब्ध होने के बावजूद, सी++11 में जोड़ा गया कचरा संग्रह समर्थन हटा दिया गया; सी ++ में कचरा संग्रह विशेष अनुप्रयोगों के लिए स्पष्ट रूप से उपयोगी है। हालाँकि, मानक द्वारा निर्दिष्ट कचरा संग्रह उन अनुप्रयोगों के लिए उपयोगी नहीं है।
 * निंदा करना std::aligned_storage और std::aligned_union