सी ++ 20: Difference between revisions
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
{{C++ language revisions}} | {{C++ language revisions}} | ||
'''[[C++|सी++]]20''' सी++ प्रोग्रामिंग भाषा के लिए मानकीकरण के लिए अंतर्राष्ट्रीय संगठन या अंतर्राष्ट्रीय [[इंटरनेशनल इलेक्ट्रोटेक्नीकल कमीशन]] मानक का एक संस्करण है। सी++20 ने सी++ मानक के पूर्व संस्करण को | '''[[C++|सी++]]20''' सी++ प्रोग्रामिंग भाषा के लिए मानकीकरण के लिए अंतर्राष्ट्रीय संगठन या अंतर्राष्ट्रीय [[इंटरनेशनल इलेक्ट्रोटेक्नीकल कमीशन]] मानक का एक संस्करण है। सी++20 ने सी++ मानक के पूर्व संस्करण को | ||
परिवर्तित दिया। जिसे [[C++17|सी++17]] कहा जाता है।<ref>{{cite web |title=The Standard |url=https://isocpp.org/std/the-standard |website=isocpp.org |accessdate=7 September 2020 |archive-date=19 September 2020 |archive-url=https://web.archive.org/web/20200919050617/https://isocpp.org/std/the-standard |url-status=live }}</ref> मानक को विधि रूप से अंतिम रूप दिया गया था।<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1000r3.pdf|title=P1000R3: C++ IS schedule|last=Sutter|first=Herb|date=2019-10-01|website=|access-date=2020-02-13|archive-date=2019-11-14|archive-url=https://web.archive.org/web/20191114141143/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1000r3.pdf|url-status=live}}</ref> फरवरी 2020 में [[प्राहा]] में बैठक में आईएसओ/आईईसी जेटीसी 1/एससी 22 द्वारा<ref>{{cite web|url=http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/n4817.pdf|title=N4817: 2020 Prague Meeting Invitation and Information|last=Dusíková|first=Hana|date=2019-11-06|website=|url-status=live|archive-url=https://web.archive.org/web/20191229102449/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/n4817.pdf |archive-date=2019-12-29 |access-date=2020-02-13}}</ref> 4 सितंबर 2020 को स्वीकृत किया गया<ref>{{cite web |title=Current Status |url=https://isocpp.org/std/status |website=isocpp.org |accessdate=7 September 2020 |archive-date=8 September 2020 |archive-url=https://web.archive.org/web/20200908083135/https://isocpp.org/std/status |url-status=live }}</ref><ref>{{cite web |title=C++20 Approved -- Herb Sutter |url=https://isocpp.org/blog/2020/09/cpp20-approved-herb-sutter |website=isocpp.org |accessdate=8 September 2020 |archive-date=11 September 2020 |archive-url=https://web.archive.org/web/20200911150359/https://isocpp.org/blog/2020/09/cpp20-approved-herb-sutter |url-status=live }}</ref> और दिसंबर 2020 में प्रकाशित हुआ।<ref>{{cite web|url=https://www.iso.org/standard/79358.html|title=ISO/IEC 14882:2020|access-date=2020-12-16|archive-date=2020-12-16|archive-url=https://web.archive.org/web/20201216154357/https://www.iso.org/standard/79358.html|url-status=live}}</ref> | |||
| Line 39: | Line 42: | ||
* <code>std::make_shared</code> और <code>std::allocate_shared</code> सरणियों के लिए<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0674r1.html|title=Extending make_shared to Support Arrays|access-date=2020-02-12|archive-date=2017-09-06|archive-url=https://web.archive.org/web/20170906070027/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0674r1.html|url-status=live}}</ref> | * <code>std::make_shared</code> और <code>std::allocate_shared</code> सरणियों के लिए<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0674r1.html|title=Extending make_shared to Support Arrays|access-date=2020-02-12|archive-date=2017-09-06|archive-url=https://web.archive.org/web/20170906070027/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0674r1.html|url-status=live}}</ref> | ||
* एटॉमिक स्मार्ट पॉइंटर्स (जैसे <code>std::atomic<shared_ptr<T>></code> और <code>std::atomic<weak_ptr<T>></code>)<ref>{{cite web |last1=Meredith |first1=Alisdair |last2=Sutter |first2=Herb |title=Revising atomic_shared_ptr for C++20 |url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0718r2.html |website=JTC1/SC22/WG21 - The C++ Standards Committee - ISOCPP |publisher=[[International Organization for Standardization|ISO]] |accessdate=27 December 2018 |archive-date=4 January 2018 |archive-url=https://web.archive.org/web/20180104184159/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0718r2.html |url-status=live }}</ref> | * एटॉमिक स्मार्ट पॉइंटर्स (जैसे <code>std::atomic<shared_ptr<T>></code> और <code>std::atomic<weak_ptr<T>></code>)<ref>{{cite web |last1=Meredith |first1=Alisdair |last2=Sutter |first2=Herb |title=Revising atomic_shared_ptr for C++20 |url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0718r2.html |website=JTC1/SC22/WG21 - The C++ Standards Committee - ISOCPP |publisher=[[International Organization for Standardization|ISO]] |accessdate=27 December 2018 |archive-date=4 January 2018 |archive-url=https://web.archive.org/web/20180104184159/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0718r2.html |url-status=live }}</ref> | ||
* <code>std::to_address</code> एक सूचक को कच्चे सूचक में | * <code>std::to_address</code> एक सूचक को कच्चे सूचक में परिवर्तितने के लिए<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0653r2.html|title=Utility to convert a pointer to a raw pointer|access-date=2020-02-12|archive-date=2018-02-20|archive-url=https://web.archive.org/web/20180220012525/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0653r2.html|url-status=live}}</ref> | ||
* कैलेंडर और समय-क्षेत्र के अतिरिक्त <code><chrono></code><ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0355r7.html|title=Extending <chrono> to Calendars and Time Zones|author1=Howard E. Hinnant|author2=Tomasz Kamiński|access-date=2019-05-18|archive-date=2018-05-13|archive-url=https://web.archive.org/web/20180513074927/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0355r7.html|url-status=live}}</ref> | * कैलेंडर और समय-क्षेत्र के अतिरिक्त <code><chrono></code><ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0355r7.html|title=Extending <chrono> to Calendars and Time Zones|author1=Howard E. Hinnant|author2=Tomasz Kamiński|access-date=2019-05-18|archive-date=2018-05-13|archive-url=https://web.archive.org/web/20180513074927/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0355r7.html|url-status=live}}</ref> | ||
* <code>std::span</code> एक सन्निहित सारणी के लिए एक दृश्य प्रदान करता है। (संदर्भित अनुक्रम को <code>std::string_view,</code> <code>span</code> के अनुरूप | * <code>std::span</code> एक सन्निहित सारणी के लिए एक दृश्य प्रदान करता है। (संदर्भित अनुक्रम को <code>std::string_view,</code> <code>span</code> के अनुरूप परिवर्तित सकते हैं।)<ref>{{cite web|url=http://wg21.link/p0122|title=span: bounds-safe views for sequences of objects|author1=Neil MacIntosh|author2=Stephan T. Lavavej|access-date=2019-05-18|archive-date=2019-05-18|archive-url=https://web.archive.org/web/20190518102826/http://wg21.link/p0122|url-status=live}}</ref> | ||
* <code>std::erase</code> और <code>std::erase_if</code> अधिकांश मानक कंटेनरों के लिए तत्व विलोपन को सरल बनाना<ref>{{Cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html|title=Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20|date=2018-10-04|author1=Alisdair Meredith|author2=Stephan T. Lavavej|access-date=2020-12-14|archive-date=2021-03-08|archive-url=https://web.archive.org/web/20210308123055/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html|url-status=live}}</ref> | * <code>std::erase</code> और <code>std::erase_if</code> अधिकांश मानक कंटेनरों के लिए तत्व विलोपन को सरल बनाना<ref>{{Cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html|title=Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20|date=2018-10-04|author1=Alisdair Meredith|author2=Stephan T. Lavavej|access-date=2020-12-14|archive-date=2021-03-08|archive-url=https://web.archive.org/web/20210308123055/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html|url-status=live}}</ref> | ||
* <code><version></code> हैडर<ref>{{cite web|url=http://wg21.link/p0754|title=<version>|author=Alan Talbot|access-date=2019-05-18|archive-date=2019-05-18|archive-url=https://web.archive.org/web/20190518102900/http://wg21.link/p0754|url-status=live}}</ref> | * <code><version></code> हैडर<ref>{{cite web|url=http://wg21.link/p0754|title=<version>|author=Alan Talbot|access-date=2019-05-18|archive-date=2019-05-18|archive-url=https://web.archive.org/web/20190518102900/http://wg21.link/p0754|url-status=live}}</ref> | ||
| Line 118: | Line 121: | ||
* स्ट्रिंग शाब्दिक टेम्पलेट पैरामीटर के रूप में | * स्ट्रिंग शाब्दिक टेम्पलेट पैरामीटर के रूप में | ||
* एटॉमिक स्मार्ट पॉइंटर्स (जैसे <code>std::atomic<shared_ptr<T>></code> और <code>std::atomic<weak_ptr<T>></code>) | * एटॉमिक स्मार्ट पॉइंटर्स (जैसे <code>std::atomic<shared_ptr<T>></code> और <code>std::atomic<weak_ptr<T>></code>) | ||
* <code>std::to_address</code> एक सूचक को कच्चे सूचक में | * <code>std::to_address</code> एक सूचक को कच्चे सूचक में परिवर्तितने के लिए | ||
मार्च 2018 (जैक्सनविले) में सी ++ 20 वर्किंग ड्राफ्ट में प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं:<ref>{{cite web|url=https://botondballo.wordpress.com/2018/03/28/trip-report-c-standards-meeting-in-jacksonville-march-2018/|title=Trip Report: C++ Standards Meeting in Jacksonville, March 2018|author=Botond Ballo|access-date=2019-05-18|archive-date=2019-05-18|archive-url=https://web.archive.org/web/20190518102815/https://botondballo.wordpress.com/2018/03/28/trip-report-c-standards-meeting-in-jacksonville-march-2018/|url-status=live}}</ref> | मार्च 2018 (जैक्सनविले) में सी ++ 20 वर्किंग ड्राफ्ट में प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं:<ref>{{cite web|url=https://botondballo.wordpress.com/2018/03/28/trip-report-c-standards-meeting-in-jacksonville-march-2018/|title=Trip Report: C++ Standards Meeting in Jacksonville, March 2018|author=Botond Ballo|access-date=2019-05-18|archive-date=2019-05-18|archive-url=https://web.archive.org/web/20190518102815/https://botondballo.wordpress.com/2018/03/28/trip-report-c-standards-meeting-in-jacksonville-march-2018/|url-status=live}}</ref> | ||
| Line 124: | Line 127: | ||
* नए मानक गुण <code><nowiki>[[no_unique_address]]</nowiki></code>, <code><nowiki>[[likely]]</nowiki></code> और <code><nowiki>[[unlikely]]</nowiki></code> | * नए मानक गुण <code><nowiki>[[no_unique_address]]</nowiki></code>, <code><nowiki>[[likely]]</nowiki></code> और <code><nowiki>[[unlikely]]</nowiki></code> | ||
* कैलेंडर और समय-क्षेत्र के अतिरिक्त <code><chrono></code> | * कैलेंडर और समय-क्षेत्र के अतिरिक्त <code><chrono></code> | ||
* <code>std::span</code> एक सन्निहित सारणी के लिए एक दृश्य प्रदान करता है। (संदर्भित अनुक्रम के अनुरूप <code>std::string_view</code> <code>span</code> को | * <code>std::span</code> एक सन्निहित सारणी के लिए एक दृश्य प्रदान करता है। (संदर्भित अनुक्रम के अनुरूप <code>std::string_view</code> <code>span</code> को परिवर्तित सकते हैं।) | ||
* <code><version></code> हैडर | * <code><version></code> हैडर | ||
| Line 156: | Line 159: | ||
* दायरे का उपयोग करना <code>enum</code>s<ref name="P1099R5: Using Enum">{{cite web|url=http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1099r5.html|title=P1099R5: Using Enum|date=2019-07-20|website=www.open-std.org|access-date=2019-07-20|archive-date=2019-08-20|archive-url=https://web.archive.org/web/20190820001959/http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1099r5.html|url-status=live}}</ref> | * दायरे का उपयोग करना <code>enum</code>s<ref name="P1099R5: Using Enum">{{cite web|url=http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1099r5.html|title=P1099R5: Using Enum|date=2019-07-20|website=www.open-std.org|access-date=2019-07-20|archive-date=2019-08-20|archive-url=https://web.archive.org/web/20190820001959/http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1099r5.html|url-status=live}}</ref> | ||
* स्पेसशिप ऑपरेटर में विभिन्न परिवर्तन<ref>{{cite web|url=http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1186r3.html|title=P1186R3: When do you actually use <=>?|date=2019-07-20|website=www.open-std.org|access-date=2019-07-20|archive-date=2019-08-20|archive-url=https://web.archive.org/web/20190820001956/http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1186r3.html|url-status=live}}</ref><ref>{{cite web|url=http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1630r1.html|title=P1630R1: Spaceship needs a tune-up|date=2019-07-20|website=www.open-std.org|access-date=2019-07-20|archive-date=2019-08-20|archive-url=https://web.archive.org/web/20190820001956/http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1630r1.html|url-status=live}}</ref> | * स्पेसशिप ऑपरेटर में विभिन्न परिवर्तन<ref>{{cite web|url=http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1186r3.html|title=P1186R3: When do you actually use <=>?|date=2019-07-20|website=www.open-std.org|access-date=2019-07-20|archive-date=2019-08-20|archive-url=https://web.archive.org/web/20190820001956/http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1186r3.html|url-status=live}}</ref><ref>{{cite web|url=http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1630r1.html|title=P1630R1: Spaceship needs a tune-up|date=2019-07-20|website=www.open-std.org|access-date=2019-07-20|archive-date=2019-08-20|archive-url=https://web.archive.org/web/20190820001956/http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1630r1.html|url-status=live}}</ref> | ||
* डॉ: मॉड्यूल में न्यूनतम | * डॉ: मॉड्यूल में न्यूनतम परिवर्तिताव<ref>{{cite web|url=http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1766r1.html|title=P1766R1: Mitigating minor modules maladies|date=2019-07-20|website=www.open-std.org|access-date=2019-07-20|archive-date=2019-08-20|archive-url=https://web.archive.org/web/20190820002001/http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1766r1.html|url-status=live}}</ref> | ||
* <code>constinit</code> कीवर्ड | * <code>constinit</code> कीवर्ड | ||
* अवधारणाओं में परिवर्तन (निकालना <code>-> Type</code> वापसी-प्रकार-आवश्यकताएं<ref>{{cite web|url=http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1452r2.html|title=P1452R2: On the non-uniform semantics of return-type-requirements|date=2019-07-20|website=www.open-std.org|access-date=2019-07-20|archive-date=2019-08-20|archive-url=https://web.archive.org/web/20190820001954/http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1452r2.html|url-status=live}}</ref>) | * अवधारणाओं में परिवर्तन (निकालना <code>-> Type</code> वापसी-प्रकार-आवश्यकताएं<ref>{{cite web|url=http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1452r2.html|title=P1452R2: On the non-uniform semantics of return-type-requirements|date=2019-07-20|website=www.open-std.org|access-date=2019-07-20|archive-date=2019-08-20|archive-url=https://web.archive.org/web/20190820001954/http://open-std.org/JTC1/SC22/WG21/docs/papers/2019/p1452r2.html|url-status=live}}</ref>) | ||
| Line 179: | Line 182: | ||
* प्रतिबंधित गैर-टेम्प्लेट फलन हटा दिए गए हैं। | * प्रतिबंधित गैर-टेम्प्लेट फलन हटा दिए गए हैं। | ||
* <code><compare></code> अब फ्रीस्टैंडिंग कार्यान्वयन में उपलब्ध है।<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1855r0.html|title=P1855R=: Make <compare> freestanding|date=2019-10-05|website=www.open-std.org|access-date=2019-11-09|archive-date=2019-11-09|archive-url=https://web.archive.org/web/20191109111422/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1855r0.html|url-status=live}}</ref> | * <code><compare></code> अब फ्रीस्टैंडिंग कार्यान्वयन में उपलब्ध है।<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1855r0.html|title=P1855R=: Make <compare> freestanding|date=2019-10-05|website=www.open-std.org|access-date=2019-11-09|archive-date=2019-11-09|archive-url=https://web.archive.org/web/20191109111422/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1855r0.html|url-status=live}}</ref> | ||
* <code>std::span</code>s [[typedef|टाइपडेफ]] से | * <code>std::span</code>s [[typedef|टाइपडेफ]] से परिवर्तित दिया गया था। <code>index_type</code> को <code>size_type</code> शेष मानक पुस्तकालय के अनुरूप होना चाहिए।<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1872r0.pdf|title=P1872R0: span should have size_type not index_type|date=2019-09-16|website=www.open-std.org|access-date=2019-11-09|archive-date=2019-11-09|archive-url=https://web.archive.org/web/20191109111423/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1872r0.pdf|url-status=live}}</ref> | ||
* कोलोन बैठक के परिणामस्वरूप अवधारणाओं के नामकरण का पालन करने के लिए संकल्पना लक्षणों का नाम | * कोलोन बैठक के परिणामस्वरूप अवधारणाओं के नामकरण का पालन करने के लिए संकल्पना लक्षणों का नाम परिवर्तित दिया गया है। | ||
* श्रेणियों में कई सुधार और परिवर्धन (पी1456आर1: मूव-ओनली व्यूज,<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1456r0.pdf|title=P1456: Move-only views|date=2019-01-25|website=www.open-std.org|access-date=2019-11-09|archive-date=2019-11-09|archive-url=https://web.archive.org/web/20191109111425/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1456r0.pdf|url-status=live}}</ref> पी1391आर4: के लिए रेंज कंस्ट्रक्टर <code>std::string_view</code> (पात्रों की इटरेटर-जोड़ी से निर्माता),<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1391r4.pdf|title=P1391: Range constructor for std::string_view|date=|website=www.open-std.org|access-date=2019-11-09|archive-date=2020-01-04|archive-url=https://web.archive.org/web/20200104215539/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1391r4.pdf|url-status=live}}</ref> पी1394आर4: के लिए रेंज कंस्ट्रक्टर <code>std::span<ref></code>,<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1394r3.pdf|title=P1394: Range constructor for std::span|date=2019-08-02|website=www.open-std.org|access-date=2019-11-09|archive-date=2019-11-09|archive-url=https://web.archive.org/web/20191109111421/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1394r3.pdf|url-status=live}}</ref> पी1870आर1: अग्रेषण-श्रेणी<T> बहुत सूक्ष्म है।<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1870r0.html|title=P1870R1: forwarding-range<T> is too subtle|date=6 October 2019|website=www.open-std.org|access-date=2019-11-09|archive-date=2019-11-09|archive-url=https://web.archive.org/web/20191109111421/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1870r0.html|url-status=live}}</ref>) | * श्रेणियों में कई सुधार और परिवर्धन (पी1456आर1: मूव-ओनली व्यूज,<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1456r0.pdf|title=P1456: Move-only views|date=2019-01-25|website=www.open-std.org|access-date=2019-11-09|archive-date=2019-11-09|archive-url=https://web.archive.org/web/20191109111425/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1456r0.pdf|url-status=live}}</ref> पी1391आर4: के लिए रेंज कंस्ट्रक्टर <code>std::string_view</code> (पात्रों की इटरेटर-जोड़ी से निर्माता),<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1391r4.pdf|title=P1391: Range constructor for std::string_view|date=|website=www.open-std.org|access-date=2019-11-09|archive-date=2020-01-04|archive-url=https://web.archive.org/web/20200104215539/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1391r4.pdf|url-status=live}}</ref> पी1394आर4: के लिए रेंज कंस्ट्रक्टर <code>std::span<ref></code>,<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1394r3.pdf|title=P1394: Range constructor for std::span|date=2019-08-02|website=www.open-std.org|access-date=2019-11-09|archive-date=2019-11-09|archive-url=https://web.archive.org/web/20191109111421/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1394r3.pdf|url-status=live}}</ref> पी1870आर1: अग्रेषण-श्रेणी<T> बहुत सूक्ष्म है।<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1870r0.html|title=P1870R1: forwarding-range<T> is too subtle|date=6 October 2019|website=www.open-std.org|access-date=2019-11-09|archive-date=2019-11-09|archive-url=https://web.archive.org/web/20191109111421/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1870r0.html|url-status=live}}</ref>) | ||
* <code>std::atomic<T></code>के लिए आरंभीकरण इसे डिफ़ॉल्ट और सूची आरंभीकरण के साथ काम करने के लिए | * <code>std::atomic<T></code>के लिए आरंभीकरण इसे डिफ़ॉल्ट और सूची आरंभीकरण के साथ काम करने के लिए परिवर्तित दिया गया है।<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0883r1.pdf|title=P0883: Fixing Atomic Initialization|date=2018-06-05|website=www.open-std.org|access-date=2019-11-09|archive-date=2019-11-09|archive-url=https://web.archive.org/web/20191109111419/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0883r1.pdf|url-status=live}}</ref> <code>std::latch</code> और <code>std::barrier</code> अब नए सदस्य फलन के माध्यम से कार्यान्वयन द्वारा समर्थित थ्रेड्स की अधिकतम संख्या <code>max()</code> को रिपोर्ट कर सकते हैं। | ||
* <code>std::weak_equality</code> और <code>std::strong_equality</code> उपयोग में न होने के कारण इन्हें हटा दिया गया है। | * <code>std::weak_equality</code> और <code>std::strong_equality</code> उपयोग में न होने के कारण इन्हें हटा दिया गया है। | ||
* <code>constexpr</code>में एल्गोरिदम <code><numeric></code> बनाया गया है। | * <code>constexpr</code>में एल्गोरिदम <code><numeric></code> बनाया गया है। | ||
* सी++20 के नए या | * सी++20 के नए या परिवर्तिते हुए फीचर के लिए मिसिंग फीचर-टेस्ट मैक्रोज़ जोड़े गए हैं।<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1902r0.html|title=Missing feature-test macros 2018-2019|date=2019-10-06|website=www.open-std.org|access-date=2019-11-09|archive-date=2019-11-09|archive-url=https://web.archive.org/web/20191109111423/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1902r0.html|url-status=live}}</ref> | ||
Revision as of 00:08, 1 March 2023
| C++ language revisions |
|---|
सी++20 सी++ प्रोग्रामिंग भाषा के लिए मानकीकरण के लिए अंतर्राष्ट्रीय संगठन या अंतर्राष्ट्रीय इंटरनेशनल इलेक्ट्रोटेक्नीकल कमीशन मानक का एक संस्करण है। सी++20 ने सी++ मानक के पूर्व संस्करण को
परिवर्तित दिया। जिसे सी++17 कहा जाता है।[1] मानक को विधि रूप से अंतिम रूप दिया गया था।[2] फरवरी 2020 में प्राहा में बैठक में आईएसओ/आईईसी जेटीसी 1/एससी 22 द्वारा[3] 4 सितंबर 2020 को स्वीकृत किया गया[4][5] और दिसंबर 2020 में प्रकाशित हुआ।[6]
सुविधाएँ
सी++20 सी++14 या सी++17 की तुलना में अधिक नई प्रमुख विशेषताएं जोड़ता है।[7] सी++20 में स्वीकार किए गए परिवर्तनों में भी सम्मिलित हैं।[8]
भाषा
- अवधारणाएं (सी ++)[9] संक्षिप्त वाक्य रचना के साथ[10]
- मॉड्यूलर प्रोग्रामिंग[11]
- नामक प्रारंभकर्ता[12] (सी99 फीचर और सामान्य जीएनयू संकलक संग्रह और जी++ एक्सटेंशन पर आधारित)
[=, this]लैम्ब्डा कैप्चर के रूप में[13]- लैम्ब्डा में टेम्पलेट पैरामीटर सूची[14]
- स्पेसशिप ऑपरेटर का उपयोग करके तीनों ओर की तुलना करना,
operator <=> - एक श्रेणी-आधारित के अन्दर एक अतिरिक्त चर का आरंभीकरण
forकथन[15] - बिना मूल्यांकित संदर्भों में लैम्ब्डा[16][17]
- डिफ़ॉल्ट रचनात्मक और असाइन करने योग्य स्टेटलेस लैम्ब्डा[16][18]
- लैम्ब्डा इनिट-कैप्चर में पैक विस्तार की अनुमति दें[16][19]
- गैर-प्रकार के टेम्पलेट पैरामीटर में वर्ग प्रकार स्ट्रिंग अक्षर को टेम्पलेट पैरामीटर के रूप में भी अनुमति देता है।[20]
- कुछ निश्चित परिस्थितियों में
typenameकी आवश्यकता को दूर करना [21] - नए मानक गुण
[[no_unique_address]],[22][[likely]]और[[unlikely]][23] - नियमानुसार
explicitअनुमति देता है।explicitएक बूलियन अभिव्यक्ति पर आकस्मिक होने के लिए संशोधक है।[24] - विस्तारित
constexpr: आभासी कार्य,[25]union,[26]tryऔरcatch,[27]dynamic_castऔरtypeid,[28]std::pointer_traits[29] - नए
constevalकीवर्ड का उपयोग कर तत्काल कार्य करता है।[30] - हस्ताक्षरित पूर्णांक अब दो के पूरक का उपयोग करके दर्शाए जाने के लिए परिभाषित किए गए हैं (हस्ताक्षरित पूर्णांक अतिप्रवाह अपरिभाषित व्यवहार रहता है)।[31]
- एक संशोधित स्मृति मॉडल[32]
- संरचित बाइंडिंग में विभिन्न सुधार (लैम्ब्डा कैप्चर के साथ सहभागिता,
staticऔरthread_localभंडारण अवधि)[33][34] - कोरूटीन[35]
usingके अन्तर्गतenums[36]constinitकीवर्ड[37]
पुस्तकालय
- पर्वतमाला (एक श्रेणी प्रस्ताव)[38]
std::make_sharedऔरstd::allocate_sharedसरणियों के लिए[39]- एटॉमिक स्मार्ट पॉइंटर्स (जैसे
std::atomic<shared_ptr<T>>औरstd::atomic<weak_ptr<T>>)[40] std::to_addressएक सूचक को कच्चे सूचक में परिवर्तितने के लिए[41]- कैलेंडर और समय-क्षेत्र के अतिरिक्त
<chrono>[42] std::spanएक सन्निहित सारणी के लिए एक दृश्य प्रदान करता है। (संदर्भित अनुक्रम कोstd::string_view,spanके अनुरूप परिवर्तित सकते हैं।)[43]std::eraseऔरstd::erase_ifअधिकांश मानक कंटेनरों के लिए तत्व विलोपन को सरल बनाना[44]<version>हैडर[45]std::bit_cast<>से कम शब्द भंडार के साथ वस्तु निरूपण के प्रकार, कास्टिंग के लिएmemcpy()और कंपाइलर इंटर्नल्स का लाभ लेने की अधिक क्षमता[46]- फीचर टेस्ट मैक्रोज़[47]
- विभिन्न कॉन्स्टेक्स लाइब्रेरी बिट्स[48]
- डिफॉल्ट इनिशियलाइज़ेशन के साथ स्मार्ट पॉइंटर क्रिएशन[49]
containsसहयोगी कंटेनरों के लिए विधि[50]- बिट ऑपरेशंस जैसे लीडिंग/ट्रेलिंग ज़ीरो/वन काउंट[51]और लॉग 2 ऑपरेशंस[52][53][54]
std::bind_front[55]
नए और परिवर्तित कीवर्ड्स
कई नए कीवर्ड जोड़े गए और नया स्पेसशिप ऑपरेटर operator <=>) जैसे कि concept, constinit,[37] consteval, co_await, co_return, co_yield, requires (प्लस के लिए परिवर्तित अर्थ export) और char8_t (यूटीएफ-8 समर्थन के लिए)[56] और explicit सी ++ 20 के बाद से अभिव्यक्ति को ग्रहण कर सकता है।[57] इसके अधिकांश उपयोग volatile कीवर्ड को बहिष्कृत कर दिया गया है।[58]
खोजशब्दों के अतिरिक्त नए विशेष अर्थ वाले पहचानकर्ता भी हैं। import और module. सी ++ 20 में नई विशेषताएँ:[[likely]], [[unlikely]], और [[no_unique_address]][59] हैं।
हटाया और पदावनत किया
हटाई गई विशेषताएं:[60]
- सी (प्रोग्रामिंग भाषा)-व्युत्पन्न हेडर
<ccomplex>,<ciso646>,<cstdalign>,<cstdbool>और<ctgmath>हटा दिए गए क्योंकि वे सी++ में कोई उद्देश्य पूरा नहीं करते। इसी<*.h>सी के साथ अनुकूलता के लिए हेडर बने रहते हैं। throw()- कुछ पूर्व में पदावनत पुस्तकालय सुविधाओं को हटा दिया गया था> जिनमें सम्मिलित हैं
std::uncaught_exception,std::raw_storage_iterator,std::is_literal_type,std::is_literal_type_v,std::result_ofऔरstd::result_of_t.
बहिष्कृत विशेषताएं:
- सबस्क्रिप्ट एक्सप्रेशन में कॉमा ऑपरेटर का उपयोग बहिष्कृत कर दिया गया है[61]
volatileको बहिष्कृत किया गया है।[58]
विधि विशिष्टताओं के रूप में प्रकाशित
बाद के मानक के लिए स्थगित
- अनुबंध एक नए प्रस्ताव पर काम करने के लिए एक नया अध्ययन समूह (एसजी21) बनाया गया है।[66]
- प्रतिबिंब[67][68]
- मेटाक्लास[69]
- निष्पादक[70]
- नेटवर्किंग एक्सटेंशन,[71][72] एसिन, मूलभूत आई/ओ सेवाओं, टाइमर, बफ़र्स और बफर-ओरिएंटेड स्ट्रीम, सॉकेट्स और इंटरनेट प्रोटोकॉल (निष्पादकों द्वारा अवरुद्ध) सहित।
- गुण[73]
- विस्तारित प्रतिज्ञा[74]
संकलक समर्थन
पूर्ण समर्थन[75]
- माइक्रोसॉफ्ट विजुअल स्टूडियो 2019 इसके माध्यम से सभी सी++20 सुविधाओं का समर्थन करता है।
/std:सी++latestविकल्प संस्करण 16.10.0 के अनुसार[76] एक विकल्प/std:सी++20सी++20 मोड को सक्षम करने के लिए संस्करण 16.11.0 में जोड़ा गया है।[77][78] प्रोजेक्ट गुण → कॉन्फ़िगरेशन गुण → सी/सी ++ → भाषा → सी ++ भाषा मानक।
माइक्रोसॉफ्ट का कंपाइलर केवल विंडोज, लिनक्स (और जैसे एंड्रॉइड और आईओएस) का समर्थन नहीं करता है। किन्तु इसके लिए लिनक्स डेवलपमेंट एक्सटेंशन के लिए विज़ुअल सी ++ की आवश्यकता होती है।[79]
- बजना में कम सी++20 समर्थन है। जिसे विकल्प के साथ सक्षम किया जा सकता है।
-std=सी++20(संस्करण 10 और बाद में) या-std=सी++2a(संस्करण 9 और पूर्व)।[80] - एडिसन प्रारूप समूह ने संस्करण 5.0 में सी++20 सुविधाओं को प्रयुक्त करना प्रारम्भ किया और संस्करण 6.1 के रूप में अधिकांशतः सी++20 कोर भाषा सुविधाओं का समर्थन करता है।[81]
- जीएनयू संकलक संग्रह ने 2017 में आंशिक, प्रयोगात्मक सी++20 समर्थन जोड़ा और[82] विकल्प के माध्यम से संस्करण 8 में
-std=सी++2aक्लैंग के अनुसार जीसीसी ने इस विकल्प को-std=सी++20संस्करण 10 में भी जोड़ा। इसमें प्रायोगिक सी++20 समर्थन के अतिरिक्त जीएनयू एक्सटेंशन को सक्षम करने का विकल्प भी है।-std=gnu++20.[83]
इतिहास
जुलाई 2017 (टोरंटो) में सी++20 वर्किंग ड्राफ्ट में प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं:[84]
- अवधारणाएँ (सी++) (जिसने इसे मानक में बनाया। वह एक कट-डाउन संस्करण है। इसे कॉन्सेप्ट लाइट के रूप में भी वर्णित किया गया है।[85])
- नामक प्रारंभकर्ता
[=, this]लैम्ब्डा कैप्चर के रूप में- लैम्ब्डा पर टेम्पलेट पैरामीटर सूची
std::make_sharedऔरstd::allocate_sharedसारणियों के लिए
नवंबर 2017 (अल्बुकर्क) में कमी की बैठक में सी ++ 20 वर्किंग ड्राफ्ट में प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं:[86][87]
- स्पेसशिप ऑपरेटर का उपयोग करके तीनों ओर की तुलना,
operator <=> - एक श्रेणी-आधारित के अन्दर एक अतिरिक्त चर का आरंभीकरण
forकथन - बिना मूल्यांकित संदर्भों में लैम्ब्डा
- डिफ़ॉल्ट रचनात्मक और असाइन करने योग्य स्टेटलेस लैम्ब्डा
- लैम्ब्डा इनिट-कैप्चर में पैक विस्तार की अनुमति दें
- स्ट्रिंग शाब्दिक टेम्पलेट पैरामीटर के रूप में
- एटॉमिक स्मार्ट पॉइंटर्स (जैसे
std::atomic<shared_ptr<T>>औरstd::atomic<weak_ptr<T>>) std::to_addressएक सूचक को कच्चे सूचक में परिवर्तितने के लिए
मार्च 2018 (जैक्सनविले) में सी ++ 20 वर्किंग ड्राफ्ट में प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं:[88]
- कुछ निश्चित परिस्थितियों में
typenameकी आवश्यकता को दूर करना । - नए मानक गुण
[[no_unique_address]],[[likely]]और[[unlikely]] - कैलेंडर और समय-क्षेत्र के अतिरिक्त
<chrono> std::spanएक सन्निहित सारणी के लिए एक दृश्य प्रदान करता है। (संदर्भित अनुक्रम के अनुरूपstd::string_viewspanको परिवर्तित सकते हैं।)<version>हैडर
जून 2018 (रैपर्सविल) में ग्रीष्मकालीन बैठक में सी ++ 20 वर्किंग ड्राफ्ट में प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं:[89]
अनुबंध(सी++20 बाद के मानक के लिए स्थगित)[90]- फीचर टेस्ट मैक्रोज़
- वस्तु अभ्यावेदन की बिट-कास्टिंग से कम वाचालता के साथ
memcpy()और कंपाइलर इंटर्नल्स का लाभ लेने की अधिक क्षमता - सशर्त
explicit, स्पष्ट संशोधक को बूलियन अभिव्यक्ति पर आकस्मिक होने की अनुमति देता है - विपक्ष आभासी कार्य करता है।
नवंबर 2018 (सैन डिएगो) में कमी की बैठक में सी ++ 20 वर्किंग ड्राफ्ट में प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं:[91]
- पर्वतमाला (एक श्रेणी प्रस्ताव)
- अवधारणा संक्षिप्त वाक्य रचना
constexprunion,tryऔरcatch,dynamic_cast,typeidऔरstd::pointer_traits.- विभिन्न
constexprलाइब्रेरी बिट्स constevalकीवर्ड नए का उपयोग कर तत्काल कार्य करता है।- हस्ताक्षरित पूर्णांक अब दो के पूरक का उपयोग करके दर्शाए जाने के लिए परिभाषित किए गए हैं। (हस्ताक्षरित पूर्णांक अतिप्रवाह अपरिभाषित व्यवहार रहता है)
अनुबंध सुविधा का परिशोधन (अनुबंध शर्तों में अभिगम नियंत्रण)[92] (सी ++ 20 की सूची देखें बाद के मानक के लिए स्थगित)- एक संशोधित स्मृति मॉडल
- डिफॉल्ट इनिशियलाइज़ेशन के साथ स्मार्ट पॉइंटर क्रिएशन
फरवरी 2019 (कोना) में शीतकालीन बैठक में सी++20 वर्किंग ड्राफ्ट में प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं:[93][94][95]
- कोरआउटिन
- मॉड्यूलर प्रोग्रामिंग
- संरचित बाइंडिंग में विभिन्न सुधार (लैम्ब्डा कैप्चर के साथ सहभागिता,
staticऔरthread_localभंडारण अवधि)
जुलाई 2019 (कोलोन) में ग्रीष्मकालीन बैठक में सी++20 वर्किंग ड्राफ्ट में प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं:[96][97][98][99]
- अनुबंध हटा दिए गए थे (सी ++ 20 की सूची देखें बाद के मानक के लिए स्थगित)[100]
- सबस्क्रिप्ट एक्सप्रेशंस में कॉमा ऑपरेटर का उपयोग बहिष्कृत कर दिया गया है[61]
constexprअतिरिक्त (तुच्छ डिफ़ॉल्ट प्रारंभिकरण,[101] अमूल्यांकित इनलाइन-असेंबली[102])- दायरे का उपयोग करना
enums[36] - स्पेसशिप ऑपरेटर में विभिन्न परिवर्तन[103][104]
- डॉ: मॉड्यूल में न्यूनतम परिवर्तिताव[105]
constinitकीवर्ड- अवधारणाओं में परिवर्तन (निकालना
-> Typeवापसी-प्रकार-आवश्यकताएं[106]) - (के सबसे)
volatileबहिष्कृत किया गया है[58] - डॉ:
[[nodiscard]]निर्माणकर्ताओं पर प्रभाव[107] - नई मानक पुस्तकालय अवधारणाएँ पास्कलकेस का उपयोग नहीं करेंगी (किन्तु
standard_caseशेष मानक पुस्तकालय के रूप में)[108] - पाठ स्वरूपण[109][110] (
chronoएकीकर[111] कोने की स्थिति सही करता है।[112]) - बिट ऑपरेशंस[51]
constexpr INVOKE[113]- गणित स्थिरांक[114]
- परमाणुओं के लिए संगति परिवर्धन (
std::atomic_ref<T>,[115]std::atomic<std::shared_ptr<T>>[116]) - जोड़ें
<=>मानक पुस्तकालय के लिए ऑपरेटर[117] - मानक पुस्तकालय के लिए हेडर इकाइयां[118]
- तुल्यकालन सुविधाएं[119] ( कुशल परमाणु प्रतीक्षा और सेमाफोर,[120] कुंडी और अवरोध,[121] में सुधार
atomic_flag,[122] छोटे सीपीयू पर सी++ को प्रयुक्त करने योग्य न बनाएं[123]) std::source_location[124]constexprकंटेनर (std::string,[125]std::vector[126])std::stop_tokenऔर धागे में सम्मिलित होना (std::jthread)[127]
नवंबर 2019 (बेलफास्ट) में फॉल मीटिंग में एनबी टिप्पणी प्रस्ताव के समय प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं:[128][129][130]