सी ++ 20
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
के अन्तर्गतenum
s[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_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])- दायरे का उपयोग करना
enum
s[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::span
s टाइपडेफ से बदल दिया गया था।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]
संदर्भ
- ↑ "The Standard". isocpp.org. Archived from the original on 19 September 2020. Retrieved 7 September 2020.
- ↑ Sutter, Herb (2019-10-01). "P1000R3: C++ IS schedule" (PDF). Archived (PDF) from the original on 2019-11-14. Retrieved 2020-02-13.
- ↑ 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.
- ↑ "Current Status". isocpp.org. Archived from the original on 8 September 2020. Retrieved 7 September 2020.
- ↑ "C++20 Approved -- Herb Sutter". isocpp.org. Archived from the original on 11 September 2020. Retrieved 8 September 2020.
- ↑ "ISO/IEC 14882:2020". Archived from the original on 2020-12-16. Retrieved 2020-12-16.
- ↑ "Why does the C++ standard ship every three years?". 13 July 2019. Archived from the original on 13 July 2019. Retrieved 19 July 2019.
- ↑ "P0592R0: To boldly suggest an overall plan for C++20". Archived from the original on 2017-03-08. Retrieved 2017-05-06.
- ↑ "P0606R0: Concepts Are Ready" (PDF). Archived (PDF) from the original on 2017-03-28. Retrieved 2017-05-06.
- ↑ "P1141R1 - Yet another approach for constrained declarations". Archived from the original on 2018-11-11. Retrieved 2018-11-11.
- ↑ "N4720: Working Draft, Extensions to C++ for Modules" (PDF). Archived (PDF) from the original on 2019-04-30. Retrieved 2019-04-30.
- ↑ Tim Shen; Richard Smith. "Designated Initialization Wording". Archived from the original on 2017-10-15. Retrieved 2017-07-16.
- ↑ Thomas Köppe. "Allow lambda capture [=, this]". Archived from the original on 2019-02-09. Retrieved 2017-07-16.
- ↑ "Familiar template syntax for generic lambdas". Archived from the original on 2018-11-21. Retrieved 2017-07-16.
- ↑ "Range-based for statements with initializer". Archived from the original on 2017-04-06. Retrieved 2019-10-30.
- ↑ 16.0 16.1 16.2 "Trip Report: C++ Standards Meeting in Albuquerque, November 2017". There's Waldo! (in English). 2017-11-20. Archived from the original on 2017-12-11. Retrieved 2017-12-11.
- ↑ "Wording for lambdas in unevaluated contexts" (PDF). Archived (PDF) from the original on 2017-12-12. Retrieved 2017-12-11.
- ↑ "Default constructible and assignable stateless lambdas" (PDF). Archived (PDF) from the original on 2017-12-12. Retrieved 2017-12-11.
- ↑ "Pack expansion in lambda init-capture". www.open-std.org. Archived from the original on 2020-02-14. Retrieved 2017-12-11.
- ↑ "Class Types in Non-Type Template Parameters" (PDF). www.open-std.org. 2018-06-06. Archived (PDF) from the original on 2022-02-05. Retrieved 2022-02-18.
- ↑ Nina Ranns; Daveed Vandevoorde. "Down with typename!". Archived from the original on 2018-04-22. Retrieved 2019-05-18.
- ↑ "Language support for empty objects". Archived from the original on 2018-04-17. Retrieved 2019-08-04.
- ↑ "Proposed wording for likely and unlikely attributes (Revision 5)". Archived from the original on 2018-05-13. Retrieved 2019-05-18.
- ↑ "explicit(bool)". www.open-std.org. Archived from the original on 2018-07-20. Retrieved 2018-11-13.
- ↑ "Allowing Virtual Function Calls in Constant Expressions". www.open-std.org. Archived from the original on 2018-06-11. Retrieved 2019-03-11.
- ↑ "P1330R0 - Changing the active member of a union inside constexpr". Archived from the original on 2019-07-26. Retrieved 2019-07-26.
- ↑ "P1002R0 - Try-catch blocks in constexpr functions" (PDF). Archived (PDF) from the original on 2018-11-11. Retrieved 2018-11-11.
- ↑ "P1327R0 - Allowing dynamic_cast, polymorphic typeid in Constant Expressions". Archived from the original on 2019-07-26. Retrieved 2019-07-26.
- ↑ "P1006R1 - Constexpr in std::pointer_traits" (PDF). Archived (PDF) from the original on 2018-11-11. Retrieved 2018-11-11.
- ↑ "P1073R2 - Immediate functions". Archived from the original on 2018-10-26. Retrieved 2018-11-11.
- ↑ "P1236R0: Alternative Wording for P0907R4 Signed Integers are Two's Complement". Archived from the original on 2018-11-11. Retrieved 2018-11-11.
- ↑ "P0668R4: Revising the C++ memory model". Archived from the original on 2018-11-11. Retrieved 2018-11-11.
- ↑ "P1091R1: Extending structured bindings to be more like variable declarations". www.open-std.org. Archived from the original on 2019-01-26. Retrieved 2019-02-24.
- ↑ "P1091R2: Extending structured bindings to be more like variable declarations". www.open-std.org. Archived from the original on 2019-01-26. Retrieved 2019-02-24.
- ↑ "N4649: Working Draft, Technical Specification on C++ Extensions for Coroutines" (PDF). Archived (PDF) from the original on 2017-05-16. Retrieved 2017-05-06.
- ↑ 36.0 36.1 "P1099R5: Using Enum". www.open-std.org. 2019-07-20. Archived from the original on 2019-08-20. Retrieved 2019-07-20.
- ↑ 37.0 37.1 "P1143R2: Adding the constinit keyword". www.open-std.org. 2019-07-20. Archived from the original on 2019-08-20. Retrieved 2019-07-20.
- ↑ "P0896R3" (PDF). Archived (PDF) from the original on 2018-11-11. Retrieved 2018-11-11.
- ↑ "Extending make_shared to Support Arrays". Archived from the original on 2017-09-06. Retrieved 2020-02-12.
- ↑ Meredith, Alisdair; Sutter, Herb. "Revising atomic_shared_ptr for C++20". JTC1/SC22/WG21 - The C++ Standards Committee - ISOCPP. ISO. Archived from the original on 4 January 2018. Retrieved 27 December 2018.
- ↑ "Utility to convert a pointer to a raw pointer". Archived from the original on 2018-02-20. Retrieved 2020-02-12.
- ↑ Howard E. Hinnant; Tomasz Kamiński. "Extending <chrono> to Calendars and Time Zones". Archived from the original on 2018-05-13. Retrieved 2019-05-18.
- ↑ Neil MacIntosh; Stephan T. Lavavej. "span: bounds-safe views for sequences of objects". Archived from the original on 2019-05-18. Retrieved 2019-05-18.
- ↑ Alisdair Meredith; Stephan T. Lavavej (2018-10-04). "Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20". Archived from the original on 2021-03-08. Retrieved 2020-12-14.
- ↑ Alan Talbot. "<version>". Archived from the original on 2019-05-18. Retrieved 2019-05-18.
- ↑ "Bit-casting object representations". www.open-std.org. Archived from the original on 2018-08-18. Retrieved 2018-11-10.
- ↑ "Integrating feature-test macros into the C++ WD". www.open-std.org. Archived from the original on 2018-07-20. Retrieved 2018-11-10.
- ↑ "P1032R1 - Misc constexpr bits". Archived from the original on 2018-10-26. Retrieved 2018-11-11.
- ↑ "Smart pointer creation with default initialization". Archived from the original on 2019-01-26. Retrieved 2020-02-12.
- ↑ Mikhail Maltsev. "P0458R2: Checking for Existence of an Element in Associative Containers". Archived from the original on 2022-01-16. Retrieved 2022-01-02.
- ↑ 51.0 51.1 "P0553R4: Bit operations". www.open-std.org. 2019-07-20. Archived from the original on 2019-07-20. Retrieved 2019-07-20.
- ↑ "P0556R3: Integral power-of-2 operations". www.open-std.org. 2018-06-06. Archived from the original on 2019-06-26. Retrieved 2020-08-08.
- ↑ "P1355R2 Exposing a narrow contract for ceil2". www.open-std.org. 2019-06-11. Archived from the original on 2019-08-05. Retrieved 2020-08-08.
- ↑ "On the names of low-level bit manipulation functions" (PDF). www.open-std.org. 2020-02-11. Archived (PDF) from the original on 2020-03-24. Retrieved 2020-08-08.
- ↑ Tomasz Kamiński (2017-11-09). "Simplified partial function application". Archived from the original on 2020-09-28. Retrieved 2020-11-08.
- ↑ "C++ keywords - cppreference.com". en.cppreference.com. Archived from the original on 2012-03-19. Retrieved 2019-08-04.
- ↑ "explicit specifier - cppreference.com". en.cppreference.com. Archived from the original on 2012-02-21. Retrieved 2019-08-04.
- ↑ 58.0 58.1 58.2 "P1152R4: Deprecating volatile". www.open-std.org. 2019-07-20. Archived from the original on 2019-06-23. Retrieved 2019-07-20.
- ↑ "attribute specifier sequence(since C++11) - cppreference.com". en.cppreference.com. Archived from the original on 2012-07-05. Retrieved 2019-08-04.
- ↑ "Working Draft, Standard for Programming Language C++ (Annex C, §C.1)" (PDF). Archived (PDF) from the original on 2020-04-27. Retrieved 2020-11-18.
- ↑ 61.0 61.1 "P1161R2: Deprecate uses of the comma operator in subscripting expressions". www.open-std.org. Archived from the original on 2019-07-20. Retrieved 2019-07-20.
- ↑ "C++ Extensions for Parallelism Version 2". Archived (PDF) from the original on 2022-09-21. Retrieved 2019-07-09.
- ↑ "Task Blocks". Archived from the original on 2017-09-19. Retrieved 2017-07-23.
- ↑ "C++ Extensions for Reflection". Archived (PDF) from the original on 2022-09-21. Retrieved 2019-07-09.
- ↑ "C++ Extensions for Networking". Archived (PDF) from the original on 2022-09-21. Retrieved 2019-07-09.
- ↑ Sutter, Herb (2019-07-20). "Trip report: Summer ISO C++ standards meeting (Cologne)". Sutter's Mill (in English). Archived from the original on 2020-04-17. Retrieved 2019-07-21.
- ↑ "Reflections on the reflection proposals - Meeting C++". meetingcpp.com (in English). Archived from the original on 2017-06-23. Retrieved 2017-06-30.
- ↑ "Static reflection". www.open-std.org. Archived from the original on 2020-02-22. Retrieved 2018-11-10.
- ↑ Herb Sutter. "मेटाक्लासेस" (PDF). Archived (PDF) from the original on 2020-11-11. Retrieved 2017-07-23.
- ↑ "A Unified Executors Proposal for C++". www.open-std.org. Archived from the original on 2020-02-20. Retrieved 2019-02-24.
- ↑ "N4771: Working Draft, C++ Extensions for Networking" (PDF). Archived (PDF) from the original on 2020-04-19. Retrieved 2019-03-23.
- ↑ "ISO/IEC TS 19216:2018 Programming Languages -- C++ Extensions for Networking". Archived from the original on 2019-01-15. Retrieved 2018-12-17.
- ↑ "A General Property Customization Mechanism". www.open-std.org. Archived from the original on 2020-01-19. Retrieved 2019-02-24.
- ↑ "A Unified Futures Proposal for C++". Archived from the original on 2022-09-21. Retrieved 2019-07-08.
- ↑ "C++ compiler support - cppreference.com". en.cppreference.com. Archived from the original on 2022-08-08. Retrieved 2022-08-12.
- ↑ jawiddis. "Visual Studio 2019 version 16.10 Release Notes". docs.microsoft.com (in English). Archived from the original on 2021-08-11. Retrieved 2021-07-13.
- ↑ "MSVC C++20 and the /std:c++20 Switch". docs.microsoft.com (in English). Archived from the original on 2021-09-06. Retrieved 2021-09-07.
- ↑ Visual Studio documentation for Microsoft C++, Microsoft Docs, 2022-04-19, archived from the original on 2022-04-19, retrieved 2022-04-19
- ↑ "Visual Studio 2019 Compatibility". docs.microsoft.com (in English). Archived from the original on 2020-06-03. Retrieved 2022-08-12.
- ↑ "Clang - C++ Programming Language Status". clang.llvm.org. Archived from the original on 2013-07-04. Retrieved 2022-04-19.
- ↑ "C++ compiler support - cppreference.com". en.cppreference.com. Archived from the original on 2020-10-03. Retrieved 2020-10-10.
- ↑ "Andrew Sutton - [PATCH] Add -std=c++2a". gcc.gnu.org. Archived from the original on 2021-03-01. Retrieved 2022-04-19.
- ↑ "C++ Standards Support in GCC - GNU Project". gcc.gnu.org. Archived from the original on 2022-04-20. Retrieved 2022-04-19.
- ↑ Herb Sutter. "Trip report: Summer ISO C++ standards meeting (Toronto)". Archived from the original on 2017-08-06. Retrieved 2017-07-16.
- ↑ Andrew Sutton; Bjarne Stroustrup (2013-02-24). "Concepts Lite: Constraining Templates with Predicates". isocpp.org. isocpp.org. Archived from the original on 2021-01-16. Retrieved 2021-01-13.
- ↑ Herb Sutter. "Trip report: Fall ISO C++ standards meeting (Albuquerque)". Archived from the original on 2019-02-13. Retrieved 2017-12-04.
- ↑ Smith, Richard; Perchik, Dawn; Köppe, Thomas. "N4714 Editors' Report -- Programming Languages -- C++". C++ standards drafts. GitHub. Archived from the original on 21 September 2022. Retrieved 27 December 2018.
- ↑ Botond Ballo. "Trip Report: C++ Standards Meeting in Jacksonville, March 2018". Archived from the original on 2019-05-18. Retrieved 2019-05-18.
- ↑ Herb Sutter. "Trip report: Summer ISO C++ standards meeting (Rapperswil)". Archived from the original on 2020-05-23. Retrieved 2018-11-10.
- ↑ "Support for contract based programming in C++". www.open-std.org. Archived from the original on 2020-01-15. Retrieved 2018-11-10.
- ↑ fall meeting in November 2018
- ↑ "P1289R0 - Access control in contract conditions" (PDF). Archived (PDF) from the original on 2018-11-11. Retrieved 2018-11-11.
- ↑ winter meeting in February 2019
- ↑ "r/cpp - 2019-02 Kona ISO C++ Committee Trip Report (C++20 design is complete; Modules in C++20; Coroutines in C++20; Reflection TS v1 published; work begins on a C++ Ecosystem Technical Report)". reddit (in English). Archived from the original on 2019-02-23. Retrieved 2019-02-24.
- ↑ "Trip report: Winter ISO C++ standards meeting (Kona)". Sutter's Mill (in English). 2019-02-23. Archived from the original on 2019-02-24. Retrieved 2019-02-24.
- ↑ "summer meeting in July 2019" (PDF).
- ↑ "r/cpp - 2019-07 Cologne ISO C++ Committee Trip Report — 🚀 The C++20 Eagle has Landed 🚀 (C++20 Committee Draft shipped; Contracts Moved From C++20 to a Study Group; 'std::format' in C++20; C++20 Synchronization Library)". reddit (in English). Archived from the original on 2020-04-20. Retrieved 2019-09-15.
- ↑ Botond Ballo. "Trip Report: C++ Standards Meeting in Cologne, July 2019". Archived from the original on 2020-02-26. Retrieved 2019-08-05.
- ↑ Sutter, Herb. "Trip report: Summer ISO C++ standards meeting (Cologne)". Archived from the original on 2020-04-17. Retrieved 2019-07-21.
- ↑ Josuttis, Nicolai. "P1823R0: Remove Contracts from C++20" (PDF). Archived (PDF) from the original on 2020-08-13. Retrieved 2019-08-20.
- ↑ "Permitting trivial default initialization in constexpr contexts" (PDF). Archived (PDF) from the original on 2020-10-19. Retrieved 2019-07-20.
- ↑ "P1668R1: Enabling Constexpr Intrinsics By Permitting Unevaluated inline-asm in Constexpr Functions". www.open-std.org. Archived from the original on 2020-01-19. Retrieved 2019-07-20.
- ↑ "P1186R3: When do you actually use <=>?". www.open-std.org. 2019-07-20. Archived from the original on 2019-08-20. Retrieved 2019-07-20.
- ↑ "P1630R1: Spaceship needs a tune-up". www.open-std.org. 2019-07-20. Archived from the original on 2019-08-20. Retrieved 2019-07-20.
- ↑ "P1766R1: Mitigating minor modules maladies". www.open-std.org. 2019-07-20. Archived from the original on 2019-08-20. Retrieved 2019-07-20.
- ↑ "P1452R2: On the non-uniform semantics of return-type-requirements". www.open-std.org. 2019-07-20. Archived from the original on 2019-08-20. Retrieved 2019-07-20.
- ↑ "P1771R1: nodiscard for constructors" (PDF). www.open-std.org. 2019-07-20. Archived (PDF) from the original on 2022-09-21. Retrieved 2019-07-20.
- ↑ "P1754R1: Rename concepts to standard_case for C++20, while we still can" (PDF). www.open-std.org. 2019-07-20. Archived (PDF) from the original on 2019-08-20. Retrieved 2019-07-20.
- ↑ "P0645R10: Text Formatting". www.open-std.org. 2019-07-20. Archived from the original on 2019-08-20. Retrieved 2019-07-20.
- ↑ "std::format in C++20". www.zverovich.net. 2019-07-23. Archived from the original on 2019-07-23. Retrieved 2019-09-15.
- ↑ "P1361R2: Integration of chrono with text formatting" (PDF). www.open-std.org. 2019-07-20. Archived (PDF) from the original on 2019-08-20. Retrieved 2019-07-20.
- ↑ "P1652R1: Printf corner cases in std::format". www.open-std.org. 2019-07-20. Archived from the original on 2019-08-20. Retrieved 2019-07-20.
- ↑ "P1965R2: constexpr INVOKE". www.open-std.org. 2019-07-20. Archived from the original on 2019-08-20. Retrieved 2019-07-20.
- ↑ "P0631R8: Math Constants" (PDF). www.open-std.org. 2019-07-20. Archived (PDF) from the original on 2019-08-20. Retrieved 2019-07-20.
- ↑ "P1643R1: Add wait/notify to atomic_ref<T>". www.open-std.org. 2019-07-20. Archived from the original on 2019-08-20. Retrieved 2019-07-20.
- ↑ "P1664R0: Add wait/notify to atomic<shared_ptr<T>>". www.open-std.org. 2019-07-20. Archived from the original on 2021-11-05. Retrieved 2019-07-20.
- ↑ "P1614R2: The Mothership has Landed - Adding <=> to the Library". www.open-std.org. 2019-07-20. Archived from the original on 2019-08-20. Retrieved 2019-07-20.
- ↑ "P1502R1: Standard library header units for C++20". www.open-std.org. 2019-07-20. Archived from the original on 2019-08-20. Retrieved 2019-07-20.
- ↑ "P1135R6: The C++20 Synchronization Library". www.open-std.org. 2019-07-20. Archived from the original on 2019-08-20. Retrieved 2019-07-20.
- ↑ "P0514R4: Efficient concurrent waiting for C++20" (PDF). Archived (PDF) from the original on 2018-08-18. Retrieved 2019-07-20.
- ↑ "P0666R2: Revised Latches and Barriers for C++20" (PDF). Archived (PDF) from the original on 2018-08-18. Retrieved 2019-07-20.
- ↑ "P0995R1: Improving atomic_flag". Archived from the original on 2019-07-20. Retrieved 2019-07-20.
- ↑ "P1285R0: Don't Make C++ Unimplementable On Small CPUs". Archived from the original on 2019-07-15. Retrieved 2019-07-20.
- ↑ "P1208R6: Adopt source_location from Library Fundamentals V3 for C++20" (PDF). Archived (PDF) from the original on 2019-08-20. Retrieved 2019-08-20.
- ↑ "P0980R1: Making std::string constexpr" (PDF). Archived (PDF) from the original on 2020-09-29. Retrieved 2020-07-30.
- ↑ "P1004R2: Making std::vector constexpr" (PDF). Archived (PDF) from the original on 2020-09-28. Retrieved 2020-07-30.
- ↑ "P0660R10: Stop Token and Joining Thread" (PDF). Archived (PDF) from the original on 2019-08-20. Retrieved 2019-08-20.
- ↑ fall meeting in November 2019
- ↑ "r/cpp - 2019-11 Belfast ISO C++ Committee Trip Report — Started Processing Feedback on the C++20 Committee Draft; ABI Review Group Formed". reddit (in English). Archived from the original on 2019-11-09. Retrieved 2019-11-09.
- ↑ Sutter, Herb (2019-11-09). "Trip report: Autumn ISO C++ standards meeting (Belfast)". Sutter's Mill (in English). Archived from the original on 2019-11-09. Retrieved 2019-11-09.
- ↑ botondballo (2019-11-15). "Trip Report: C++ Standards Meeting in Belfast, November 2019". There's Waldo! (in English). Archived from the original on 2019-11-20. Retrieved 2019-11-24.
- ↑ "P1907R0: Inconsistencies with non-type template parameters". www.open-std.org. 2019-10-07. Archived from the original on 2019-11-09. Retrieved 2019-11-09.
- ↑ "P1714: NTTP are incomplete without float, double, and long double! (Revision 1)". www.open-std.org. 2019-07-19. Archived from the original on 2019-11-09. Retrieved 2019-11-09.
- ↑ "P1855R=: Make <compare> freestanding". www.open-std.org. 2019-10-05. Archived from the original on 2019-11-09. Retrieved 2019-11-09.
- ↑ "P1872R0: span should have size_type not index_type" (PDF). www.open-std.org. 2019-09-16. Archived (PDF) from the original on 2019-11-09. Retrieved 2019-11-09.
- ↑ "P1456: Move-only views" (PDF). www.open-std.org. 2019-01-25. Archived (PDF) from the original on 2019-11-09. Retrieved 2019-11-09.
- ↑ "P1391: Range constructor for std::string_view" (PDF). www.open-std.org. Archived (PDF) from the original on 2020-01-04. Retrieved 2019-11-09.
- ↑ "P1394: Range constructor for std::span" (PDF). www.open-std.org. 2019-08-02. Archived (PDF) from the original on 2019-11-09. Retrieved 2019-11-09.
- ↑ "P1870R1: forwarding-range<T> is too subtle". www.open-std.org. 6 October 2019. Archived from the original on 2019-11-09. Retrieved 2019-11-09.
- ↑ "P0883: Fixing Atomic Initialization" (PDF). www.open-std.org. 2018-06-05. Archived (PDF) from the original on 2019-11-09. Retrieved 2019-11-09.
- ↑ "Missing feature-test macros 2018-2019". www.open-std.org. 2019-10-06. Archived from the original on 2019-11-09. Retrieved 2019-11-09.
बाहरी संबंध
- 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