C++
आईएसओ सी ++ मानक
खोज…
परिचय
1998 में, C ++ को आंतरिक रूप से मानकीकृत भाषा बनाने वाले मानक का पहला प्रकाशन हुआ। उस समय से, C ++ विकसित हुई है, जिसके परिणामस्वरूप C ++ की विभिन्न बोलियाँ हैं। इस पृष्ठ पर, आप पिछले संस्करण की तुलना में सभी विभिन्न मानकों और उनके परिवर्तनों का अवलोकन पा सकते हैं। अधिक विशिष्ट पृष्ठों पर इन सुविधाओं का उपयोग करने के तरीके का विवरण दिया गया है।
टिप्पणियों
जब C ++ का उल्लेख किया जाता है, तो अक्सर "मानक" के लिए एक संदर्भ बनाया जाता है। लेकिन वास्तव में वह मानक क्या है?
C ++ का एक लंबा इतिहास है। बेल लैब्स के भीतर ब्रेज़न स्ट्रॉस्ट्रप द्वारा एक छोटी परियोजना के रूप में शुरू किया गया, 90 के दशक की शुरुआत में यह काफी लोकप्रिय हो गया था। कई कंपनियां C ++ कंपाइलर बना रही थीं ताकि उपयोगकर्ता अपने C ++ कंपाइलर को कंप्यूटर की एक विस्तृत श्रृंखला पर चला सकें। लेकिन इसे सुविधाजनक बनाने के लिए, इन सभी प्रतिस्पर्धी कंपाइलरों को भाषा की एक एकल परिभाषा साझा करनी चाहिए।
उस समय, सी भाषा को सफलतापूर्वक मानकीकृत किया गया था। इसका मतलब है कि भाषा का एक औपचारिक विवरण लिखा गया था। यह अमेरिकी राष्ट्रीय मानक संस्थान (एएनएसआई) को प्रस्तुत किया गया था, जिसने 1989 में समीक्षा के लिए दस्तावेज खोला और बाद में इसे प्रकाशित किया। एक साल बाद, अंतर्राष्ट्रीय मानक संगठन (क्योंकि इसमें अलग-अलग भाषाओं के अलग-अलग शब्द होंगे जो उन्होंने एक रूप को चुना था। , आईएसओ, ग्रीक आइसोस से लिया गया, जिसका अर्थ है बराबर।) ने अंतर्राष्ट्रीय मानक के रूप में अमेरिकी मानक को अपनाया।
सी ++ के लिए, यह शुरू से ही स्पष्ट था कि एक अंतरराष्ट्रीय हित था। आईएसओ के भीतर एक कार्यसमूह शुरू किया गया था (जिसे डब्ल्यूजी 21 के रूप में जाना जाता है, सबकोमिटाइट 22 के भीतर)। इस कार्यसमूह ने 1995 के आसपास पहले मानक का मसौदा तैयार किया था। लेकिन जैसा कि हम प्रोग्रामर जानते हैं, अंतिम मिनट की विशेषताओं की तुलना में नियोजित डिलीवरी के लिए अधिक खतरनाक नहीं है, और यह C ++ के साथ भी हुआ। 1995 में, STL नाम की एक शांत नई लाइब्रेरी सामने आई, और WG21 में काम करने वाले लोगों ने C ++ ड्राफ्ट मानक में एक स्लिम-डाउन संस्करण जोड़ने का फैसला किया। स्वाभाविक रूप से, इससे समय सीमा समाप्त हो गई और केवल 3 साल बाद दस्तावेज़ अंतिम हो गया। आईएसओ एक बहुत ही औपचारिक संगठन है, इसलिए सी ++ मानक को आईएसओ / आईईसी 14882 के बहुत ही विपणन योग्य नाम के साथ नामांकित नहीं किया गया था। जैसा कि मानकों को अद्यतन किया जा सकता है, यह सटीक संस्करण 14882: 1998 के रूप में जाना जाता है।
और वास्तव में स्टैंडर्ड को अपडेट करने की मांग थी। मानक एक बहुत मोटा दस्तावेज है, जिसका उद्देश्य वास्तव में यह वर्णन करना है कि C ++ कंपाइलरों को कैसे काम करना चाहिए। यहां तक कि थोड़ी अस्पष्टता भी फिक्सिंग के लायक हो सकती है, इसलिए 2003 तक 14882: 2003 के रूप में एक अपडेट जारी किया गया था। हालाँकि, इसने C ++ में कोई सुविधा नहीं जोड़ी; नए फीचर्स को दूसरे अपडेट के लिए शेड्यूल किया गया था।
अनौपचारिक रूप से, इस दूसरे अपडेट को C ++ 0x के रूप में जाना जाता था, क्योंकि यह ज्ञात नहीं था कि यह 2008 या 2009 तक ले जाएगा। वैसे - उस संस्करण में भी थोड़ी देरी हुई, यही कारण है कि यह 14882: 2011 बन गया।
सौभाग्य से, WG21 ने फिर से ऐसा न होने देने का फैसला किया। C ++ 11 को अच्छी तरह से प्राप्त किया गया था और C ++ में नए सिरे से रुचि रखने दिया। इसलिए, गति को बनाए रखने के लिए, तीसरा अपडेट 3 साल में प्रकाशन से लेकर 14882: 2014 बनने तक चला गया।
वहां भी काम नहीं रुका। C ++ 17 मानक प्रस्तावित किया गया है और C ++ 20 के लिए काम शुरू कर दिया गया है।
वर्तमान कार्य ड्राफ्ट
सभी प्रकाशित आईएसओ मानक आईएसओ स्टोर ( http://www.iso.org ) से बिक्री के लिए उपलब्ध हैं। C ++ मानकों के कार्य ड्राफ्ट सार्वजनिक रूप से मुफ्त में उपलब्ध हैं।
मानक के विभिन्न संस्करण:
- आगामी (कभी-कभी C ++ 20 या C ++ 2a के रूप में संदर्भित): वर्तमान कार्य ड्राफ्ट ( HTML- संस्करण )
- प्रस्तावित (कभी-कभी C ++ 17 या C ++ 1z के रूप में संदर्भित): मार्च 2017 कामकाजी मसौदा N4659 ।
- C ++ 14 (कभी-कभी C ++ 1y के रूप में संदर्भित): नवंबर 2014 काम करने का मसौदा N4296
- C ++ 11 (कभी-कभी C ++ 0x के रूप में संदर्भित): फरवरी 2011 कार्यशील मसौदा N3242
- सी ++ 03
- सी ++ 98
सी ++ 11
C ++ 11 मानक C ++ मानक का एक प्रमुख विस्तार है। नीचे आप बदलावों का अवलोकन पा सकते हैं क्योंकि उन्हें अधिक विस्तृत दस्तावेज़ीकरण के लिंक के साथ आइसोकैप एफएक्यू पर समूहीकृत किया गया है।
भाषा एक्सटेंशन
सामान्य विशेषताएं
- ऑटो
- decltype
- बयान के लिए रेंज
- प्रारंभिक सूची
- यूनिफॉर्म इनिशियलाइज़ेशन सिंटैक्स और शब्दार्थ
- संदर्भ और शब्दार्थ को आगे बढ़ाएं
- lambdas
- अपवाद प्रचार को रोकने के लिए noexcept
- constexpr
- nullptr - एक अशक्त सूचक शाब्दिक
- अपवादों को कॉपी और रीथ्रोइंग करना
- इनलाइन नामस्थान
- उपयोगकर्ता-परिभाषित शाब्दिक
कक्षाएं
- = डिफ़ॉल्ट और = हटाएं
- डिफ़ॉल्ट चाल और प्रतिलिपि का नियंत्रण
- निर्माण करने वाले प्रतिनिधि
- इन-क्लास सदस्य शुरुआती
- इनहेरिट किए गए कंस्ट्रक्टर
- ओवरराइड नियंत्रण: ओवरराइड
- ओवरराइड नियंत्रण: अंतिम
- स्पष्ट रूपांतरण ऑपरेटर
अन्य प्रकार
- एनम वर्ग
- लंबा लंबा - एक लंबा पूर्णांक
- विस्तारित पूर्णांक प्रकार
- सामान्यीकृत यूनियनें
- सामान्यीकृत PODs
टेम्पलेट्स
- बाहरी टेम्पलेट
- टेम्पलेट उपनाम
- वैरेडिक टेम्प्लेट
- टेम्पलेट तर्क के रूप में स्थानीय प्रकार
संगामिति
- कॉनक्युलर मेमोरी मॉडल
- संगामिति के साथ गतिशील आरंभीकरण और विनाश
- धागा-स्थानीय भंडारण
विविध भाषा सुविधाएँ
- C ++ 11 के लिए __cplusplus का मूल्य क्या है?
- प्रत्यय वापसी प्रकार सिंटैक्स
- संकीर्णता को रोकना
- समकोण कोष्ठक
- static_assert संकलन-समय अभिकथन
- कच्चे स्ट्रिंग शाब्दिक
- गुण
- संरेखण
- C99 सुविधाएँ
लाइब्रेरी एक्सटेंशन
सामान्य
- unique_ptr
- shared_ptr
- weak_ptr
- कचरा संग्रहण ए.बी.आई.
- टपल
- प्रकार लक्षण
- समारोह और बाँध
- नियमित अभिव्यक्ति
- समय उपयोगिताएँ
- यादृच्छिक संख्या पीढ़ी
- आबंटित आवंटनकर्ता
कंटेनर और एल्गोरिदम
- एल्गोरिदम में सुधार
- कंटेनर में सुधार
- unordered_ * कंटेनर
- std :: सरणी
- forward_list
संगामिति
सी ++ 14
C ++ 14 मानक को अक्सर C ++ 11 के लिए बगफिक्स के रूप में संदर्भित किया जाता है। इसमें केवल उन परिवर्तनों की एक सीमित सूची है जिनमें अधिकांश C ++ 11 में नई सुविधाओं के लिए एक्सटेंशन हैं। नीचे आप बदलावों का अवलोकन पा सकते हैं क्योंकि उन्हें अधिक विस्तृत दस्तावेज़ीकरण के लिंक के साथ आइसोकैप एफएक्यू पर समूहीकृत किया गया है।
भाषा एक्सटेंशन
- बाइनरी लिटरल
- सामान्यीकृत वापसी प्रकार की कटौती
- decltype (ऑटो)
- सामान्यीकृत लैम्ब्डा कैप्चर करता है
- जेनेरिक लम्बदास
- परिवर्तनशील टेम्पलेट
- विस्तारित
constexpr
-
[[deprecated]]
विशेषता - अंक विभाजक
लाइब्रेरी एक्सटेंशन
- साझा ताला
- उपयोगकर्ता
std::
लिए परिभाषित शाब्दिकstd::
प्रकार -
std::make_unique
- प्रकार परिवर्तन
_t
उपनाम - प्रकार से ट्यूल को संबोधित करना (उदाहरण के
get<string>(t)
) - पारदर्शी ऑपरेटर फंडर्स (उदाहरण के लिए
greater<>(x)
) -
std::quoted
पदावनत / हटाया गया
-
std::gets
को C ++ 11 में हटा दिया गया और C ++ 14 से हटा दिया गया -
std::random_shuffle
को पदावनत किया जाता है
सी ++ 17
C ++ 17 मानक सुविधा पूर्ण है और मानकीकरण के लिए प्रस्तावित किया गया है। इन सुविधाओं के लिए प्रायोगिक समर्थन वाले कंपाइलरों में, इसे आमतौर पर C ++ 1z के रूप में संदर्भित किया जाता है।
भाषा एक्सटेंशन
- एक्सप्रेस भाव
-
auto
साथ गैर-टाइप टेम्पलेट तर्क घोषित करना - गारंटी की नकल
- कंस्ट्रक्टरों के लिए टेम्पलेट पैरामीटर कटौती
- संरचित बाइंडिंग
- कॉम्पैक्ट नेस्टेड नामस्थान
- नई विशेषताएं:
[[fallthrough]]
,[[nodiscard]]
,[[maybe_unused]]
-
static_assert
लिए डिफ़ॉल्ट संदेश - में initializers
if
औरswitch
- इनलाइन चर
-
if constexpr
- अभिव्यक्ति के मूल्यांकन की गारंटी की व्यवस्था
- अधिक संरेखित डेटा के लिए डायनामिक मेमोरी आवंटन
लाइब्रेरी एक्सटेंशन
-
std::optional
-
std::variant
-
std::string_view
-
merge()
औरextract()
साहचर्य कंटेनरों के लिए -
<filesystem>
हैडर के साथ एक फाइल सिस्टम लाइब्रेरी । - अधिकांश मानक एल्गोरिदम के समानांतर संस्करण (
<algorithm>
हेडर में )। -
<cmath>
शीर्ष लेख में गणितीय विशेष कार्यों का<cmath>
। - नक्शे के बीच बढ़ते नोड्स <>, unordered_map <>, सेट <>, और unordered_set <>
सी ++ 03
C ++ 03 मानक मुख्य रूप से C ++ 98 मानक के दोष रिपोर्ट को संबोधित करता है। इन दोषों के अलावा, यह केवल एक नई सुविधा जोड़ता है।
भाषा एक्सटेंशन
सी ++ 98
C ++ 98 C ++ का पहला मानकीकृत संस्करण है। जैसा कि इसे C के विस्तार के रूप में विकसित किया गया था, C से C ++ को अलग करने वाली कई विशेषताएं जोड़ी गई हैं।
भाषा एक्सटेंशन (C89 / C90 के संबंध में)
- कक्षाएं, व्युत्पन्न कक्षाएं, आभासी सदस्य फ़ंक्शंस, कास्ट सदस्य फ़ंक्शंस
- फंक्शन ओवरलोडिंग, ऑपरेटर ओवरलोडिंग
- एकल पंक्ति टिप्पणियाँ (C99 मानक के साथ C-upsague में पेश की गई हैं)
- संदर्भ
- नया और हटाएं
- बूलियन प्रकार (C99 मानक के साथ सी-लेग में पेश किया गया है)
- टेम्पलेट्स
- नामस्थान
- अपवाद
- विशिष्ट जाति
लाइब्रेरी एक्सटेंशन
- मानक टेम्पलेट लाइब्रेरी
सी ++ 20
C ++ 20, C ++ का आगामी मानक है, जो वर्तमान में विकास में है, C ++ 17 मानक पर आधारित है। यह प्रगति आधिकारिक आईएसओ सीपीपी वेबसाइट पर देखी जा सकती है।
निम्नलिखित विशेषताएं बस वही हैं जो 2020 के लिए लक्षित सी ++ मानक की अगली रिलीज के लिए स्वीकार किया गया है।
भाषा एक्सटेंशन
अभी इसके लिए कोई भाषा एक्सटेंशन स्वीकार नहीं किया गया है।
लाइब्रेरी एक्सटेंशन
अभी कोई भी लाइब्रेरी एक्सटेंशन स्वीकार नहीं किया गया है।