सी ++ 20: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 20: Line 20:
* डिफ़ॉल्ट रचनात्मक और असाइन करने योग्य स्टेटलेस लैम्ब्डा<ref name=":0" /><ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0624r2.pdf|title=Default constructible and assignable stateless lambdas|access-date=2017-12-11|archive-date=2017-12-12|archive-url=https://web.archive.org/web/20171212031425/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0624r2.pdf|url-status=live}}</ref>
* डिफ़ॉल्ट रचनात्मक और असाइन करने योग्य स्टेटलेस लैम्ब्डा<ref name=":0" /><ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0624r2.pdf|title=Default constructible and assignable stateless lambdas|access-date=2017-12-11|archive-date=2017-12-12|archive-url=https://web.archive.org/web/20171212031425/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0624r2.pdf|url-status=live}}</ref>
* लैम्ब्डा इनिट-कैप्चर में पैक विस्तार की अनुमति दें<ref name=":0" /><ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0780r0.html|title=Pack expansion in lambda init-capture|website=www.open-std.org|access-date=2017-12-11|archive-date=2020-02-14|archive-url=https://web.archive.org/web/20200214081039/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0780r0.html|url-status=live}}</ref>
* लैम्ब्डा इनिट-कैप्चर में पैक विस्तार की अनुमति दें<ref name=":0" /><ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0780r0.html|title=Pack expansion in lambda init-capture|website=www.open-std.org|access-date=2017-12-11|archive-date=2020-02-14|archive-url=https://web.archive.org/web/20200214081039/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0780r0.html|url-status=live}}</ref>
* गैर-प्रकार के टेम्पलेट पैरामीटर में वर्ग प्रकार, स्ट्रिंग अक्षर को टेम्पलेट पैरामीटर के रूप में भी अनुमति देता है।<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0732r2.pdf|title=Class Types in Non-Type Template Parameters|date=2018-06-06|website=www.open-std.org|access-date=2022-02-18|archive-date=2022-02-05|archive-url=https://web.archive.org/web/20220205083651/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0732r2.pdf|url-status=live}}</ref>
* गैर-प्रकार के टेम्पलेट पैरामीटर में वर्ग प्रकार स्ट्रिंग अक्षर को टेम्पलेट पैरामीटर के रूप में भी अनुमति देता है।<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0732r2.pdf|title=Class Types in Non-Type Template Parameters|date=2018-06-06|website=www.open-std.org|access-date=2022-02-18|archive-date=2022-02-05|archive-url=https://web.archive.org/web/20220205083651/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0732r2.pdf|url-status=live}}</ref>
* कुछ निश्चित परिस्थितियों में <code>typename</code> की आवश्यकता को दूर करना <ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0634r3.html|title=Down with typename!|author1=Nina Ranns|author2=Daveed Vandevoorde|access-date=2019-05-18|archive-date=2018-04-22|archive-url=https://web.archive.org/web/20180422180216/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0634r3.html|url-status=live}}</ref>
* कुछ निश्चित परिस्थितियों में <code>typename</code> की आवश्यकता को दूर करना <ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0634r3.html|title=Down with typename!|author1=Nina Ranns|author2=Daveed Vandevoorde|access-date=2019-05-18|archive-date=2018-04-22|archive-url=https://web.archive.org/web/20180422180216/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0634r3.html|url-status=live}}</ref>
* नए मानक गुण <code><nowiki>[[no_unique_address]]</nowiki></code>,<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0840r2.html|title=Language support for empty objects|access-date=2019-08-04|archive-date=2018-04-17|archive-url=https://web.archive.org/web/20180417180340/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0840r2.html|url-status=live}}</ref> <code><nowiki>[[likely]]</nowiki></code> और <code><nowiki>[[unlikely]]</nowiki></code><ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0479r5.html|title=Proposed wording for likely and unlikely attributes (Revision 5)|access-date=2019-05-18|archive-date=2018-05-13|archive-url=https://web.archive.org/web/20180513080343/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0479r5.html|url-status=live}}</ref>
* नए मानक गुण <code><nowiki>[[no_unique_address]]</nowiki></code>,<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0840r2.html|title=Language support for empty objects|access-date=2019-08-04|archive-date=2018-04-17|archive-url=https://web.archive.org/web/20180417180340/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0840r2.html|url-status=live}}</ref> <code><nowiki>[[likely]]</nowiki></code> और <code><nowiki>[[unlikely]]</nowiki></code><ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0479r5.html|title=Proposed wording for likely and unlikely attributes (Revision 5)|access-date=2019-05-18|archive-date=2018-05-13|archive-url=https://web.archive.org/web/20180513080343/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0479r5.html|url-status=live}}</ref>
* नियमानुसार <code>explicit</code> अनुमति देता है। <code>explicit</code> एक बूलियन अभिव्यक्ति पर आकस्मिक होने के लिए संशोधक है।<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0892r2.html|title=explicit(bool)|website=www.open-std.org|access-date=2018-11-13|archive-date=2018-07-20|archive-url=https://web.archive.org/web/20180720061629/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0892r2.html|url-status=live}}</ref>
* नियमानुसार <code>explicit</code> अनुमति देता है। <code>explicit</code> एक बूलियन अभिव्यक्ति पर आकस्मिक होने के लिए संशोधक है।<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0892r2.html|title=explicit(bool)|website=www.open-std.org|access-date=2018-11-13|archive-date=2018-07-20|archive-url=https://web.archive.org/web/20180720061629/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0892r2.html|url-status=live}}</ref>
*विस्तारित <code>constexpr</code>: आभासी कार्य,<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1064r0.html|title=Allowing Virtual Function Calls in Constant Expressions|website=www.open-std.org|access-date=2019-03-11|archive-date=2018-06-11|archive-url=https://web.archive.org/web/20180611142757/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1064r0.html|url-status=live}}</ref> <code>union</code>,<ref>{{cite web|url=https://wg21.link/p1330|title=P1330R0 - Changing the active member of a union inside constexpr|access-date=2019-07-26|archive-date=2019-07-26|archive-url=https://web.archive.org/web/20190726101620/https://wg21.link/p1330|url-status=live}}</ref> <code>try</code> और <code>catch</code>,<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1002r0.pdf|title=P1002R0 - Try-catch blocks in constexpr functions|access-date=2018-11-11|archive-date=2018-11-11|archive-url=https://web.archive.org/web/20181111133628/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1002r0.pdf|url-status=live}}</ref> <code>dynamic_cast</code> और <code>typeid</code>,<ref>{{cite web|url=https://wg21.link/p1327|title=P1327R0 - Allowing dynamic_cast, polymorphic typeid in Constant Expressions|access-date=2019-07-26|archive-date=2019-07-26|archive-url=https://web.archive.org/web/20190726101620/https://wg21.link/p1327|url-status=live}}</ref> <code>std::pointer_traits</code><ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1006r1.pdf|title=P1006R1 - Constexpr in std::pointer_traits|access-date=2018-11-11|archive-date=2018-11-11|archive-url=https://web.archive.org/web/20181111133625/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1006r1.pdf|url-status=live}}</ref>
*विस्तारित <code>constexpr</code>: आभासी कार्य,<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1064r0.html|title=Allowing Virtual Function Calls in Constant Expressions|website=www.open-std.org|access-date=2019-03-11|archive-date=2018-06-11|archive-url=https://web.archive.org/web/20180611142757/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1064r0.html|url-status=live}}</ref> <code>union</code>,<ref>{{cite web|url=https://wg21.link/p1330|title=P1330R0 - Changing the active member of a union inside constexpr|access-date=2019-07-26|archive-date=2019-07-26|archive-url=https://web.archive.org/web/20190726101620/https://wg21.link/p1330|url-status=live}}</ref> <code>try</code> और <code>catch</code>,<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1002r0.pdf|title=P1002R0 - Try-catch blocks in constexpr functions|access-date=2018-11-11|archive-date=2018-11-11|archive-url=https://web.archive.org/web/20181111133628/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1002r0.pdf|url-status=live}}</ref> <code>dynamic_cast</code> और <code>typeid</code>,<ref>{{cite web|url=https://wg21.link/p1327|title=P1327R0 - Allowing dynamic_cast, polymorphic typeid in Constant Expressions|access-date=2019-07-26|archive-date=2019-07-26|archive-url=https://web.archive.org/web/20190726101620/https://wg21.link/p1327|url-status=live}}</ref> <code>std::pointer_traits</code><ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1006r1.pdf|title=P1006R1 - Constexpr in std::pointer_traits|access-date=2018-11-11|archive-date=2018-11-11|archive-url=https://web.archive.org/web/20181111133625/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1006r1.pdf|url-status=live}}</ref>
* नए <code>consteval</code> कीवर्ड का उपयोग कर तत्काल कार्य करता है।<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1073r2.html|title=P1073R2 - Immediate functions|access-date=2018-11-11|archive-date=2018-10-26|archive-url=https://web.archive.org/web/20181026124307/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1073r2.html|url-status=live}}</ref>
* नए <code>consteval</code> कीवर्ड का उपयोग कर तत्काल कार्य करता है।<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1073r2.html|title=P1073R2 - Immediate functions|access-date=2018-11-11|archive-date=2018-10-26|archive-url=https://web.archive.org/web/20181026124307/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1073r2.html|url-status=live}}</ref>
* [[हस्ताक्षरित पूर्णांक]] अब दो के पूरक का उपयोग करके दर्शाए जाने के लिए परिभाषित किए गए हैं (हस्ताक्षरित पूर्णांक अतिप्रवाह [[अपरिभाषित व्यवहार]] रहता है)।<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1236r0.html|title=P1236R0: Alternative Wording for P0907R4 Signed Integers are Two's Complement|access-date=2018-11-11|archive-date=2018-11-11|archive-url=https://web.archive.org/web/20181111133642/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1236r0.html|url-status=live}}</ref>
* [[हस्ताक्षरित पूर्णांक]] अब दो के पूरक का उपयोग करके दर्शाए जाने के लिए परिभाषित किए गए हैं (हस्ताक्षरित पूर्णांक अतिप्रवाह [[अपरिभाषित व्यवहार]] रहता है)।<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1236r0.html|title=P1236R0: Alternative Wording for P0907R4 Signed Integers are Two's Complement|access-date=2018-11-11|archive-date=2018-11-11|archive-url=https://web.archive.org/web/20181111133642/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1236r0.html|url-status=live}}</ref>
* एक संशोधित स्मृति मॉडल<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0668r4.html|title=P0668R4: Revising the C++ memory model|access-date=2018-11-11|archive-date=2018-11-11|archive-url=https://web.archive.org/web/20181111133634/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0668r4.html|url-status=live}}</ref>
* एक संशोधित स्मृति मॉडल<ref>{{cite web|url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0668r4.html|title=P0668R4: Revising the C++ memory model|access-date=2018-11-11|archive-date=2018-11-11|archive-url=https://web.archive.org/web/20181111133634/http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0668r4.html|url-status=live}}</ref>
Line 66: Line 66:
* [[सी (प्रोग्रामिंग भाषा)]]-व्युत्पन्न हेडर <code><ccomplex></code>, <code><ciso646></code>, <code><cstdalign></code>, <code><cstdbool></code> और <code><ctgmath></code> हटा दिए गए क्योंकि वे सी++ में कोई उद्देश्य पूरा नहीं करते। इसी <code><*.h></code> सी के साथ अनुकूलता के लिए हेडर बने रहते हैं।
* [[सी (प्रोग्रामिंग भाषा)]]-व्युत्पन्न हेडर <code><ccomplex></code>, <code><ciso646></code>, <code><cstdalign></code>, <code><cstdbool></code> और <code><ctgmath></code> हटा दिए गए क्योंकि वे सी++ में कोई उद्देश्य पूरा नहीं करते। इसी <code><*.h></code> सी के साथ अनुकूलता के लिए हेडर बने रहते हैं।
* <code>throw()</code> का उपयोग एक अपवाद विनिर्देश के रूप में हटा दिया गया था।
* <code>throw()</code> का उपयोग एक अपवाद विनिर्देश के रूप में हटा दिया गया था।
* कुछ पूर्व में पदावनत पुस्तकालय सुविधाओं को हटा दिया गया था> जिनमें सम्मिलित हैं <code>std::uncaught_exception</code>, <code> std::raw_storage_iterator</code>, <code>std::is_literal_type</code>, <code>std::is_literal_type_v</code>, <code>std::result_of</code> और <code>std::result_of_t</code>.
* कुछ पूर्व में पदावनत पुस्तकालय सुविधाओं को हटा दिया गया था> जिनमें सम्मिलित हैं <code>std::uncaught_exception</code>, <code>std::raw_storage_iterator</code>, <code>std::is_literal_type</code>, <code>std::is_literal_type_v</code>, <code>std::result_of</code> और <code>std::result_of_t</code>.


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




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


* समानता टीएस वी2<ref>{{cite web|url=https://wg21.link/N4793|title=C++ Extensions for Parallelism Version 2|access-date=2019-07-09|archive-date=2022-09-21|archive-url=https://web.archive.org/web/20220921201417/https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/n4793.pdf|url-status=live}}</ref> (टास्क ब्लॉक सहित<ref>{{cite web|url=http://www.modernescpp.com/index.php/task-blocks|title=Task Blocks|publisher=|access-date=2017-07-23|archive-date=2017-09-19|archive-url=https://web.archive.org/web/20170919141316/http://www.modernescpp.com/index.php/task-blocks|url-status=live}}</ref>)
* समानता टीएस वी2<ref>{{cite web|url=https://wg21.link/N4793|title=C++ Extensions for Parallelism Version 2|access-date=2019-07-09|archive-date=2022-09-21|archive-url=https://web.archive.org/web/20220921201417/https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/n4793.pdf|url-status=live}}</ref> (टास्क ब्लॉक सहित<ref>{{cite web|url=http://www.modernescpp.com/index.php/task-blocks|title=Task Blocks|publisher=|access-date=2017-07-23|archive-date=2017-09-19|archive-url=https://web.archive.org/web/20170919141316/http://www.modernescpp.com/index.php/task-blocks|url-status=live}}</ref>)
Line 182: Line 182:
* कोलोन बैठक के परिणामस्वरूप अवधारणाओं के नामकरण का पालन करने के लिए संकल्पना लक्षणों का नाम बदल दिया गया है।
* कोलोन बैठक के परिणामस्वरूप अवधारणाओं के नामकरण का पालन करने के लिए संकल्पना लक्षणों का नाम बदल दिया गया है।
* श्रेणियों में कई सुधार और परिवर्धन (पी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&lt;ref&gt;</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&lt;T&gt; 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&lt;ref&gt;</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&lt;T&gt; 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>के लिए आरंभीकरण इसे डिफ़ॉल्ट और सूची आरंभीकरण के साथ काम करने के लिए बदल दिया गया है।<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::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>&lt;numeric&gt;</code> बनाया गया है।
* <code>constexpr</code>में एल्गोरिदम <code>&lt;numeric&gt;</code> बनाया गया है।

Revision as of 12:48, 28 February 2023

सी++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]


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

  • समानता टीएस वी2[62] (टास्क ब्लॉक सहित[63])
  • प्रतिबिंब टीएस वी1[64]
  • नेटवर्किंग टीएस वी1[65]

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

  • अनुबंध एक नए प्रस्ताव पर काम करने के लिए एक नया अध्ययन समूह (एसजी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_view span को बदल सकते हैं।)
  • <version> हैडर

जून 2018 (रैपर्सविल) में ग्रीष्मकालीन बैठक में सी ++ 20 वर्किंग ड्राफ्ट में प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं:[89]

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

नवंबर 2018 (सैन डिएगो) में कमी की बैठक में सी ++ 20 वर्किंग ड्राफ्ट में प्रयुक्त किए गए परिवर्तनों में सम्मिलित हैं:[91]

  • पर्वतमाला (एक श्रेणी प्रस्ताव)
  • अवधारणा संक्षिप्त वाक्य रचना
  • constexpr union, 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][131]

  • गैर-प्रकार टेम्पलेट पैरामीटर्स (एनटीटीपी) में वर्ग प्रकार: उपयोगकर्ता परिभाषित नहीं होने का प्रतिबंध operator== अनुमति को हटा दिया गया है क्योंकि टेम्पलेट तर्क समानता का अर्थ स्वयं से अलग कर दिया गया है। operator==[132] यह वर्ग-प्रकार एनटीटीपी में सारणी सदस्यों के लिए भी अनुमति देता है।
  • फ़्लोटिंग-पॉइंट प्रकार[133] पॉइंटर्स और संदर्भ और यूनियन और यूनियन-जैसी कक्षाएं (गुमनाम यूनियनों वाले वर्ग प्रकार) को अब एनटीटीपी के रूप में अनुमति दी गई है।
  • फलन पहचान में अब अनुगामी आवश्यकताएं-खंड (पी1971) भी सम्मिलित हैं।
  • प्रतिबंधित गैर-टेम्प्लेट फलन हटा दिए गए हैं।
  • <compare> अब फ्रीस्टैंडिंग कार्यान्वयन में उपलब्ध है।[134]
  • std::spans टाइपडेफ से बदल दिया गया था। index_type को size_type शेष मानक पुस्तकालय के अनुरूप होना चाहिए।[135]
  • कोलोन बैठक के परिणामस्वरूप अवधारणाओं के नामकरण का पालन करने के लिए संकल्पना लक्षणों का नाम बदल दिया गया है।
  • श्रेणियों में कई सुधार और परिवर्धन (पी1456आर1: मूव-ओनली व्यूज,[136] पी1391आर4: के लिए रेंज कंस्ट्रक्टर std::string_view (पात्रों की इटरेटर-जोड़ी से निर्माता),[137] पी1394आर4: के लिए रेंज कंस्ट्रक्टर std::span<ref>,[138] पी1870आर1: अग्रेषण-श्रेणी<T> बहुत सूक्ष्म है।[139])
  • std::atomic<T>के लिए आरंभीकरण इसे डिफ़ॉल्ट और सूची आरंभीकरण के साथ काम करने के लिए बदल दिया गया है।[140] std::latch और std::barrier अब नए सदस्य फलन के माध्यम से कार्यान्वयन द्वारा समर्थित थ्रेड्स की अधिकतम संख्या max() को रिपोर्ट कर सकते हैं।
  • std::weak_equality और std::strong_equality उपयोग में न होने के कारण इन्हें हटा दिया गया है।
  • constexprमें एल्गोरिदम <numeric> बनाया गया है।
  • सी++20 के नए या बदले हुए फीचर के लिए मिसिंग फीचर-टेस्ट मैक्रोज़ जोड़े गए हैं।[141]


संदर्भ

  1. "The Standard". isocpp.org. Archived from the original on 19 September 2020. Retrieved 7 September 2020.
  2. Sutter, Herb (2019-10-01). "P1000R3: C++ IS schedule" (PDF). Archived (PDF) from the original on 2019-11-14. Retrieved 2020-02-13.
  3. Dusíková, Hana (2019-11-06). "N4817: 2020 Prague Meeting Invitation and Information" (PDF). Archived (PDF) from the original on 2019-12-29. Retrieved 2020-02-13.