सी ++ 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के अन्तर्गत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][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]
संदर्भ
- ↑ "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.