सी ++ 23

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

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

नई सुविधाएँ
आमने-सामने WG21 बैठकों की अनुपस्थिति में, C++23 के मसौदे में अब तक कुछ नई सुविधाएँ जोड़ी गई हैं। लेकिन 9 नवंबर 2020 की वर्चुअल WG21 बैठक के बाद निम्नलिखित जोड़े गए, जहां उन्हें स्ट्रॉ पोल द्वारा अनुमोदित किया गया: 22 फरवरी 2021 की वर्चुअल WG21 बैठक के बाद, निम्नलिखित विशेषताएं जोड़ी गई हैं जहां उन्हें स्ट्रॉ पोल द्वारा अनुमोदित किया गया था: जून 2021 की गर्मियों 2021 आईएसओ सी ++ मानकों पूर्ण आभासी बैठक के बाद, नई सुविधाओं और दोष रिपोर्ट को स्ट्रॉ पोल द्वारा अनुमोदित किया गया था: अक्टूबर 2021 की शरद ऋतु 2021 आईएसओ सी ++ मानकों की पूर्ण आभासी बैठक के बाद, नई सुविधाओं और दोष रिपोर्ट को स्ट्रॉ पोल द्वारा अनुमोदित किया गया था: 7 फरवरी 2022 की वर्चुअल WG21 बैठक के बाद, निम्नलिखित विशेषताएं जोड़ी गई हैं जहां उन्हें स्ट्रॉ पोल द्वारा अनुमोदित किया गया था: 25 जुलाई 2022 की आभासी WG21 बैठक के बाद, निम्नलिखित विशेषताएं और दोष रिपोर्टें जोड़ी जाती हैं, जहां उन्हें स्ट्रॉ पोल द्वारा अनुमोदित किया गया था:
 * के लिए शाब्दिक प्रत्यय  और संबंधित हस्ताक्षरित प्रकार
 * एक सदस्य समारोह contains के लिए std::basic_string और std::basic_string_view, यह जांचने के लिए कि स्ट्रिंग में दिया गया सबस्ट्रिंग या वर्ण है या नहीं
 * एक स्टैक ट्रेस लाइब्रेरी (cpp), बूस्ट (C++ लाइब्रेरी) पर आधारित है। स्टैकट्रेस
 * एक प्रकार का गुण std::is_scoped_enum
 * शीर्षलेख , C (प्रोग्रामिंग लैंग्वेज) एटॉमिक्स के साथ इंटरऑपरेबिलिटी के लिए
 * इनपुट रेंज एडेप्टर की मरम्मत और 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==.
 * Iterators जोड़ी के लिए कंस्ट्रक्टर 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. दोनों निर्देश C2x (C भाषा अद्यतन) और GNU संकलक संग्रह 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++ कोड में 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 चर।

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

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