C++14: Difference between revisions
No edit summary |
|||
| Line 208: | Line 208: | ||
एसटीडी::समाकलित_स्थिर अधिभार निरंतर मान वापस करने के लिए ऑपरेटर प्राप्त किया है।<ref name=wong2/> | एसटीडी::समाकलित_स्थिर अधिभार निरंतर मान वापस करने के लिए ऑपरेटर प्राप्त किया है।<ref name=wong2/> | ||
वर्ग टेम्पले एसटीडी::पूर्णांक_अनुक्रम और संबंधित उपनाम टेम्पलेट संकलन-समय पूर्णांक अनुक्रमों का प्रतिनिधित्व करने के लिए जोड़े गए थे, जैसे पैरामीटर पैक में तत्वों के सूचकांक हैं।<ref name=intseqs>{{cite web | title=N3658 Compile-time integer sequences | url=http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2013/n3658.html |last=Wakely|first=Jonathan|date=18 April 2013|access-date=5 January 2016}}</ref> वैश्विक | वर्ग टेम्पले एसटीडी::पूर्णांक_अनुक्रम और संबंधित उपनाम टेम्पलेट संकलन-समय पूर्णांक अनुक्रमों का प्रतिनिधित्व करने के लिए जोड़े गए थे, जैसे पैरामीटर पैक में तत्वों के सूचकांक हैं।<ref name=intseqs>{{cite web | title=N3658 Compile-time integer sequences | url=http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2013/n3658.html |last=Wakely|first=Jonathan|date=18 April 2013|access-date=5 January 2016}}</ref> वैश्विक एसटीडी::प्रारम्भ/ एसटीडी::अंत फंक्शन को बढ़ाया गया <code>std::cbegin</code>/<code>std::cend</code> कार्य, जो निरंतर पुनरावर्तक लौटाते हैं, और <code>std::rbegin</code>/<code>std::rend</code> और <code>std::crbegin</code>/<code>std::crend</code> जो रिवर्स इटरेटर लौटाते हैं। <code>std::exchange</code> e> फ़ंक्शन टेम्प्लेट एक चर के लिए एक नया मान निर्दिष्ट करता है और पुराना मान लौटाता है।<ref name=exchange>{{cite web | title=N3668 exchange() utility function, revision 3 | url=http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2013/n3668.html |first=Jeffrey|last=Yasskin|date=19 April 2013|access-date=5 January 2016}}</ref> | ||
के नए अधिभार <code>std::equal</code>, <code>std::mismatch</code>, और <code>std::is_permutation</code> दूसरी श्रेणी के लिए पुनरावृत्तियों की एक जोड़ी लें, ताकि कॉलर को अलग से यह जांचने की आवश्यकता न हो कि दो श्रेणियां समान लंबाई की हैं।<ref name=robustseqs>{{cite web | title=N3671 Making non-modifying sequence operations more robust: Revision 2 | url=http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2013/n3671.html |last1=Spertus|first1=Mike|last2=Pall|first2=Attila|date=19 April 2013|access-date=5 January 2016}}</ref> | के नए अधिभार <code>std::equal</code>, <code>std::mismatch</code>, और <code>std::is_permutation</code> दूसरी श्रेणी के लिए पुनरावृत्तियों की एक जोड़ी लें, ताकि कॉलर को अलग से यह जांचने की आवश्यकता न हो कि दो श्रेणियां समान लंबाई की हैं।<ref name=robustseqs>{{cite web | title=N3671 Making non-modifying sequence operations more robust: Revision 2 | url=http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2013/n3671.html |last1=Spertus|first1=Mike|last2=Pall|first2=Attila|date=19 April 2013|access-date=5 January 2016}}</ref> | ||
Revision as of 17:47, 6 March 2023
| C++ language revisions |
|---|
सी++14, सी++ प्रोग्रामिंग भाषा के मानकीकरण के लिए अंतर्राष्ट्रीय संगठन/अंतर्राष्ट्रीय इंटरनेशनल इलेक्ट्रोटेक्नीकल कमीशन मानक का संस्करण है। इसका उद्देश्य सी++11 पर कम विस्तार होना है, जिसमें मुख्य प्रकार से बग फिक्स और छोटे सुधार सम्मिलित हैं, और इसे सी++17 द्वारा प्रतिस्थापित किया गया था। इसकी स्वीकृति की घोषणा 18 अगस्त 2014 को की गई थी।[1] सी++14 को दिसंबर 2014 में आईएसओ/आईइसी 14882:2014 के रूप में प्रकाशित किया गया था।[2] क्योंकि पहले के सी++ मानक संशोधनों में काफी देर हो चुकी थी, सी++1वाई नाम का उपयोग कभी-कभी इसके अनुमति तक किया जाता था, इसी प्रकार सी++11 मानक को 2010 से पहले इसकी रिलीज की अपेक्षा के साथ सी++ 0एक्स कहा जाता था (चूँकि वास्तव में यह 2010 और अंत में 2011 में स्खलित हो गया)।
नई भाषा सुविधाएँ
ये सी ++ 14 की मुख्य भाषा में जोड़े गए विशेषताएँ हैं।
फंक्शन रिटर्न टाइप डिडक्शन
सी++11 ने रिटर्न कथन को दिए गए अभिव्यक्ति के प्रकार के आधार पर रिटर्न प्रकार को निकालने के लिए लैम्ब्डा फ़ंक्शन (कंप्यूटर प्रोग्रामिंग) की अनुमति दी है। सी++14 सभी कार्यों के लिए यह क्षमता प्रदान करता है। यह इन सुविधाओं को लैम्ब्डा कार्यों तक विस्तारित करता है, जो उन कार्यों के लिए रिटर्न प्रकार की परिणाम की अनुमति देता है जो रिटर्न अभिव्यक्ति नहीं बनाते हैं। [3] रिटर्न प्रकार के परिणाम को प्रेरित करने के लिए, फ़ंक्शन को घोषित ऑटो वापसी प्रकार के रूप में घोषित किया जाना चाहिए, परन्तु सी ++ 11 में अनुगामी रिटर्न प्रकार विनिर्देशक के बिना है:
ऑटो रिटर्न परिणाम के प्रकार (); // रिटर्न प्रकार निर्धारित किया जाना है।
यदि कार्यों के कार्यान्वयन में कई रिटर्न अभिव्यक्ति का उपयोग किया जाता है, तो उन सभी को एक ही प्रकार का अनुमान लगाना चाहिए।[4] उनके रिटर्न प्रकार को निकालने वाले कार्यों को आगे घोषित किया जा सकता है, परन्तु जब तक उन्हें परिभाषित नहीं किया जाता तब तक उनका उपयोग नहीं किया जा सकता है। उनकी परिभाषाएँ उनका उपयोग करने वाली अनुवाद इकाई के लिए उपलब्ध होनी चाहिए।
इस प्रकार के कार्य के साथ प्रत्यावर्तन का उपयोग किया जा सकता है, परन्तु कार्य की परिभाषा में कम से कम रिटर्न कथन के बाद पुनरावर्ती कॉल होना चाहिए:[4]
ऑटो सही (आईएनटी आई) {
यदि (आई==1)
रिटर्न आई; // रिटर्न प्रकार आईएनटी के प्रकार में घटाया गया है।
रिटर्न सही (आई-1)+आई; // ठीक है इसे अभी कॉल करें
}
ऑटो गलत (आईएनटी आई) {
यदि (आई! = 1)
रिटर्न गलत (आई-1)+आई; // इसे कॉल करना बहुत तेजी होगा। कोई पूर्व रिटर्न कथन नहीं है।
रिटर्न आई; // रिटर्न प्रकार आईएनटी के प्रकार में घटाया गया है।
}
घोषणा पर वैकल्पिक प्रकार की कटौती
सी++11 में, टाइप डिडक्शन के दो प्रकार जोड़े गए थे। ऑटो दी गई अभिव्यक्ति के आधार पर उपयुक्त प्रकार का परिवर्तनीय बनाने का तरीका था। डेसिअलटाइप दी गई अभिव्यक्ति के प्रकार की गणना करने का तरीका था। चूँकि, डेसिअलटाइप और ऑटो प्रकार अलग-अलग प्रकार से निकालते हैं। विशेष प्रकार से, ऑटो निरंतर गैर-संदर्भ प्रकार का अनुमान लगाता है, जैसे कि उपयोग करके एसटीडी::क्षय, जबकि ऑटो&& अधिकतर संदर्भ प्रकार निकालता है। चूँकि, डेसिअलटाइप अभिव्यक्ति की मूल्य श्रेणी और अभिव्यक्ति की प्रकृति के आधार पर संदर्भ या गैर-संदर्भ प्रकार को कम करने के लिए प्रेरित किया जा सकता है:[5][3]
आईएनटी आई;
आईएनटी&& एफ ();
ऑटो एक्स3ए=आई; // डेसिअलटाइप (एक्स3ए) है आईएनटी
डेसिअलटाइप (आई) एक्स3डी=आई; // डेसिअलटाइप (एक्स3डी) है आईएनटी
ऑटो एक्स4ए=(आई); // डेसिअलटाइप (एक्स4ए) है आईएनटी
डेसिअलटाइप ((आई)) एक्स4डी=(आई); // डेसिअलटाइप (एक्स4डी) है आईएनटी
ऑटो एक्स5ए=एफ(); // डेसिअलटाइप (एक्स5ए) है आईएनटी
डेसिअलटाइप (एफ()) एक्स5डी=एफ(); // डेसिअलटाइप (एक्स5डी) है आईएनटी
सी ++ 14 जोड़ता है डेसिअलटाइप (ऑटो) सिंटैक्स (वाक्य-रचना) है। यह स्वतः घोषणाओं को ऑटो अभिव्यक्ति पर डेसिअलटाइप नियमों का उपयोग करने की अनुमति देता है। डेसिअलटाइप (ऑटो) सिंटैक्स (वाक्य-रचना) का उपयोग कार्य रिटर्न टाइप परिणाम के साथ भी किया जा सकता है डेसिअलटाइप (ऑटो) इसके विपरीत सिंटैक्स (वाक्य-रचना) ऑटो कार्यों के रिटर्न प्रकार की परिणाम के लिए है।[4]
रिलैक्स्ड कॉन्स्टेक्स प्रतिबंध
सी++11 ने कॉन्सटेक्सपर-घोषित कार्यों की अवधारणा प्रस्तुत की; कार्य जिसे संकलन समय पर निष्पादित किया जा सकता है। उनके वापसी मूल्यों को उन ऑपरेशनों द्वारा उपभोग किया जा सकता है जिनके लिए निरंतर अभिव्यक्ति की आवश्यकता होती है, जैसे पूर्णांक टेम्पलेट तर्क इत्यादि है। चूँकि, सी++11 कॉन्सटेक्सपर कार्यों में मात्र एक ही अभिव्यक्ति हो सकता है जो लौटाया जाता है (साथ ही स्टैटिक एसर्ट और अन्य घोषणाओं की छोटी संख्या है)।
सी++14 इन प्रतिबंधों को शिथिल करता है। कॉन्सटेक्सपर-घोषित कार्यों में अब निम्नलिखित सम्मिलित हो सकते हैं:[3]
- को छोड़कर कोई भी घोषणा:
- स्टैटिक या थ्रेड लोकल परिणाम है।
- प्रारंभिक के अतिरिक्त परिवर्तनीय घोषणाएं है।
- यदि सशर्त ब्रांचिंग कथन और स्विच है।
- रेंज-आधारित युक्त कोई भी लूपिंग कथन के लिए है ।
- अभिव्यक्तियाँ जो किसी वस्तु के मूल्य को बदल देती हैं यदि उस वस्तु का जीवनकाल स्थिर अभिव्यक्ति कार्यों के अंतर्गत प्रारम्भ होता है। इसमें किसी भी गैर-स्थिरांक कॉन्सटेक्सपर-घोषित गैर-स्थैतिक सदस्य कार्य होता है।
गोटो सी ++ 14 शिथिलकृत से कॉन्स्टैक्सपर-घोषित कार्यों में कथन प्रतिबंधित हैं।
साथ ही, सी ++ 11 ने कहा कि सभी गैर-स्थैतिक सदस्य कार्य कॉन्स्टैक्सपर भी स्पष्ट प्रकार से घोषित किए गए थे, इस संबंध में भी स्पष्ट प्रकार से घोषित कॉन्स्ट थे | वह तब से हटा दिया गया है; गैर-स्थैतिक सदस्य कार्य गैर-स्थिरांक हो सकते हैं। [6] चूँकि, उपरोक्त प्रतिबंधों के अनुकूल, गैर-स्थिरांक कॉन्स्टैक्सपर मेंबर कार्य मात्र एक वर्ग सदस्य को संशोधित कर सकता है यदि उस वस्तु का जीवनकाल निरंतर अभिव्यक्ति मूल्यांकन के अंतर्गत प्रारम्भ हुआ हो।
चर टेम्पलेट्स
सी ++ के पूर्व संस्करणों में, मात्र कार्य, क्लासेस या टाइप उपनामों को टेम्पलेट किया जा सकता है। सी++14 टेम्पलेटेड परिवर्तन के निर्माण की अनुमति देता है। प्रस्ताव में दिया गया उदाहरण परिवर्तन है पीआई जिसे विभिन्न प्रकारों के लिए पाई का मान प्राप्त करने के लिए पढ़ा जा सकता है (जैसे, 3 जब एक अभिन्न प्रकार के रूप में पढ़ा जाता है; के साथ संभव निकटतम मूल्य फ्लोट, डबल या लॉन्ग डबल उपयुक्त जब प्रकार में पढ़ने पर डबल या लॉन्ग डबल इत्यादि है)।
विशेषज्ञता सहित ऐसी घोषणाओं और परिभाषाओं पर टेम्प्लेट के सामान्य नियम क्रियान्वित होते हैं।[7][8]
टेम्पलेट<टाइपनेम टी>
कॉन्स्टैक्सपर टी पाई=टी (3.141592653589793238462643383);
// सामान्य विशेषज्ञता नियम क्रियान्वित होते हैं: टेम्पलेट <>
कॉन्स्टैक्सपर कॉन्स्ट चर* पाई<कॉन्स्ट चर*>="पाई";
सकल सदस्य आरंभीकरण
सी ++ 11 ने सदस्य प्रारंभकर्ता जोड़े, यदि कोई निर्माता सदस्य को स्वयं प्रारंभ नहीं करता है तो कक्षा के घेरे में सदस्यों पर क्रियान्वित होने वाले अभिव्यक्ति है। सदस्य प्रारंभकर्ताओं के साथ किसी भी वर्ग को स्पष्ट प्रकार से बाहर करने के लिए समुच्चय की परिभाषा बदल दी गई थी; इसलिए, उन्हें कुल आरंभीकरण का उपयोग करने की अनुमति नहीं है।
सी++14 इस प्रतिबंध को शिथिल करता है,[3] ऐसे प्रकारों पर कुल आरंभीकरण की अनुमति देना है। यदि ब्रेस्ड इनिट सूची उस तर्क के लिए कोई मान प्रदान नहीं करती है, तो सदस्य प्रारंभकर्ता इसका ध्यान रखता है।[9]
बाइनरी शाब्दिक
सी ++ 14 में संख्यात्मक अक्षर बाइनरी संख्या में निर्दिष्ट किए जा सकते हैं।[3]सिंटैक्स उपसर्गों θबी या θबी का उपयोग करते हैं। सिंटैक्स का उपयोग अन्य भाषाओं में भी किया जाता है उदाहरण जावा, सी, स्विफ्ट, जाओ, स्काला, रूबी, पायथन, ओसीएएमएल, और कम से कम 2007 से कुछ सी कंपाइलर्स में अनौपचारिक विस्तार के रूप में हुआ है।[10]
अंक विभाजक
सी ++ 14 में, एकल-उद्धरण वर्ण को पूर्णांक शाब्दिक अंकों के विभाजक के रूप में संख्यात्मक शाब्दिक, दोनों पूर्णांक शाब्दिक और फ्लोटिंग स्थान शाब्दिक के रूप में अव्यवस्थित प्रकार से उपयोग किया जा सकता है।[11] यह मानव पाठकों के लिए उपकरना के माध्यम से बड़ी संख्या को पार्स करना सरल बना सकता है।
ऑटो पूर्णांक_लिटरल = 1'000'000;
ऑटो फ्लोटिंग_पॉइंट_लिटरल = 0.000'015'3;
ऑटो बाइनरी_लिटरल = 0b0100'1100'0110;
ऑटो ए_डोज़ेन_करोड़ = 12'00'00'000;
सामान्य लैम्ब्डा
सी ++ 11 में, अज्ञात कार्य पैरामीटर को ठोस प्रकारों के साथ घोषित करने की आवश्यकता है। सी ++ 14 इस आवश्यकता को आराम देता है, जिससे लैम्ब्डा क्पै कार्य पैरामीटर को ऑटो प्रकार विनिर्देशक के साथ घोषित करने की अनुमति देता है। [7]
ऑटो लैम्ब्डा = [] (ऑटो एक्स, ऑटो वाई) {रिटर्न एक्स + वाई;};
विषय में ऑटो प्रकार की परिणाम, सामान्य लैम्ब्डा टेम्पलेट तर्क परिणाम के नियमों का पालन करते हैं (जो समान हैं, परन्तु सभी कारणों में समान नहीं हैं). उपरोक्त कोड इसके बराबर है:
इस्ट्रक्ट
{
टेम्पलेट <टाइपनाम टी, टाइपनाम यू>
ऑटो ऑपरेटर () (टी एक्स, यू वाई) कास्ट {रिटर्न एक्स + वाई;}
} लैम्ब्डा {};
सामान्य लैम्ब्डा अनिवार्य प्रकार से टेम्पलेटेड फ़ैक्टर लैम्ब्डा हैं।
लैम्ब्डा कैप्चर एक्सप्रेशंस
सी++11 लैम्ब्डा कार्य मूल्य-कॉपी या संदर्भ द्वारा उनके बाहरी घेरा में घोषित परिवर्तन को कैप्चर करता है। इसका अर्थ है कि लैम्ब्डा के मूल्य सदस्य मात्र-चलने वाले प्रकार नहीं हो सकते हैं।[12] सी ++ 14 अधिकार किए गए सदस्यों को अव्यवस्थित प्रकार से अभिव्यक्तियों के साथ प्रारंभ करने की अनुमति देता है। यह वैल्यू-मूव द्वारा अधिकार करने और लैम्ब्डा के अव्यवस्थित सदस्यों को घोषित करने की अनुमति देता है, बाहरी क्षेत्र में समान प्रकार से नामित परिवर्तन के बिना है।[7]
यह प्रारंभिक अभिव्यक्ति के उपयोग के माध्यम से किया जाता है:
ऑटो लैम्ब्डा = [मूल्य = 1] {वापसी मूल्य;};
लैम्ब्डा फंक्शन लैम्ब्डा रिटर्न 1, वह मूल्य जिसके साथ प्रारंभ किया गया था। घोषित अधिकार प्रारंभकर्ता अभिव्यक्ति से प्रकार को कम करता है जैसे कि ऑटो द्वारा किया जाता है।
यह मानक के उपयोग के माध्यम के चाल से अधिकार करने के लिए उपयोग किया जा सकता है एसटीडी::मूव कार्य है:
एसटीडी यूनिक_पीटीआर<आईएनटी>पीटीआर (न्यू इंट(10));
ऑटो लैम्ब्डा = [मूल्य = एसटीडी::मूव (पीटीआर)] {वापसी * मूल्य;};
पदानवत विशेषता इकाई को बहिष्कृत चिन्हित करने की अनुमति देती है, जो इसे अभी भी उपयोग करने के लिए कानूनी बनाती है परन्तु उपयोगकर्ताओं को यह नोटिस देती है कि उपयोग को रोकने का प्रयास किया जाता है और संकलन के दौरान चेतावनी संदेश मुद्रित किया जा सकता है। पदानवत वैकल्पिक स्ट्रिंग शाब्दिक के तर्क के रूप में प्रकट हो सकता है, पदावनति के योग्यता की व्याख्या करने और प्रतिस्थापन का सुझाव देने के लिए होता है।
पदानवत आईएनटी एफ();
पदावनत (जी() थ्रेड-असुरक्षित है। इसके विपरीत एच() का उपयोग करें)
शून्य जी (इंट एंड एक्स);
शून्य एच (इंट एंड एक्स);
शून्य परीक्षण ()
{
इंट ए = एफ (); // चेतावनी: 'एफ' बहिष्कृत है जी (ए); // चेतावनी: 'जी' बहिष्कृत है: जी() थ्रेड-असुरक्षित है। इसके विपरीत एच() का प्रयोग करें
}
नई मानक पुस्तकालय सुविधाएँ
साझा म्यूटेक्स और लॉकिंग
सी ++ 14 साझा समयबद्ध म्यूटेक्स और सहयोगी साझा लॉक प्रकार जोड़ता है।[13][14]
साहचर्य कंटेनरों में विषम लुकअप
सी ++ मानक पुस्तकालय चार सहयोगी कंटेनर वर्गों को परिभाषित करता है। ये वर्ग उपयोगकर्ता को उस प्रकार के मूल्य के आधार पर मूल्य देखने की अनुमति देते हैं। नक्शा कंटेनर उपयोगकर्ता को कुंजी और मान निर्दिष्ट करने की अनुमति देता है, जहां कुंजी द्वारा लुकअप किया जाता है और एक मान देता है। चूँकि, लुकअप निरनतर विशिष्ट कुंजी प्रकार द्वारा किया जाता है, भले ही वह मानचित्र की तरह कुंजी हो या समूह के रूप में स्वयं मान हो।
सी ++ 14 लुकअप को अव्यवस्थित प्रकार के माध्यम से करने की अनुमति देता है, जब तक कि समान ऑपरेटर उस प्रकार की समानता वास्तविक कुंजी प्रकार से कर सकता है।[15] यह मानचित्र की अनुमति देगा एसटीडी::स्ट्रिंग ए के विरुद्ध समान करने के लिए कुछ मूल्य कॉन्स्ट चर* या कोई अन्य प्रकार जिसके लिए ए ऑपरेटर अधिभार उपलब्ध है। यह एक डमी ऑब्जेक्ट बनाने के लिए खोज के उपयोगकर्ता को परेशान किये बिना सदस्य के मूल्य द्वारा एसटीडी::समूह में समग्र वस्तुओं को अनुक्रमणित करने के लिए भी उपयोगी है (उदाहरण के लिए किसी व्यक्ति को नाम से ढूंढने के लिए सम्पूर्ण व्यक्ति की संरचना बनाना)।
पिछली संगतता को बनाए रखने के लिए, विषम लुकअप की अनुमति मात्र तभी दी जाती है जब साहचर्य कंटेनर को दिया गया तुलनित्र इसकी अनुमति देता है। मानक पुस्तकालय कक्षाएं एसटीडी::न्यून<>और एसटीडी::बृहत्तर विषम लुकअप की अनुमति देने के लिए संवर्धित हैं।[16]
मानक उपयोगकर्ता परिभाषित शाब्दिक
सी ++ 11 ने उपयोगकर्ता परिभाषित शाब्दिक प्रत्यय के लिए सिंटैक्स को परिभाषित किया, परन्तु मानक पुस्तकालय ने उनमें से किसी का भी उपयोग नहीं किया गया है। सी ++ 14 निम्नलिखित मानक अक्षर जोड़ता है:[15]
- एस, विभिन्न बनाने के लिए एसटीडी::बेसिक_स्ट्रिंग प्रकार है।
- एच, मिनट, एस, एमएस, यूएस, एनएस, संबंधित बनाने के लिए एसटीडी::क्रोनो::अवधी समय अंतराल है।
- यदि, आई, आईएल, संबंधित बनाने के लिए एसटीडी::काम्प्लेक्स<फ्लोट>, एसटीडी::काम्प्लेक्स<डबल> और एसटीडी::काम्प्लेक्स<लॉन्ग डबल> काल्पनिक संख्या है।
ऑटो स्ट्र = हैलो वर्ल्ड एस; // ऑटो स्ट्रिंग घटाता है
ऑटो ड्यूर = 60s; // ऑटो क्रोनो:: सेकेंड घटाता है
ऑटो जेड = 1i; // ऑटो जटिल <डबल> घटाता है
दो एस शाब्दिक बातचीत नहीं करते हैं, क्योंकि स्ट्रिंग मात्र स्ट्रिंग अक्षर पर चलती है, और सेकेंड के लिए मात्र संख्याओं पर ही चलती है।[17]
टाइप के माध्यम से टपल एड्रेसिंग एसटीडी::टपल में प्रस्तुत प्रकार संकलित-समय स्थिर पूर्णांकों द्वारा टाइप किये गए मानों के कुल योग को अनुक्रमित करने की अनुमति देता है। सी ++ 14 इसे इंडेक्स के विपरीत टाइप द्वारा टपल से लाने की अनुमति देने के लिए विस्तारित करता है।[15]यदि टपल में एक से अत्यधिक प्रकार के तत्व हैं, तो संकलन-समय त्रुटि परिणाम होता है:
टपल <स्ट्रिंग, स्ट्रिंग, इंट> टी (फू, बार, 7);
आईएनटी आई = गेट<आईएनटी>(टी); // मैं == 7
आईएनटी जे = गेट<2>(टी); // पहले जैसा: j == 7
स्ट्रिंग एस = <स्ट्रिंग> (टी) प्राप्त करें; // अस्पष्टता के कारण संकलन-समय त्रुटि है।
छोटी पुस्तकालय सुविधाएँ
एसटीडी::बनाना_अनूठा जैसे प्रयोग कर सकते हैं एसटीडी::बनाना_साझा के लिए एसटीडी::अनूठा_ पिटीआर आब्जेक्ट हैं।[7]
एसटीडी::समाकलित_स्थिर अधिभार निरंतर मान वापस करने के लिए ऑपरेटर प्राप्त किया है।[15]
वर्ग टेम्पले एसटीडी::पूर्णांक_अनुक्रम और संबंधित उपनाम टेम्पलेट संकलन-समय पूर्णांक अनुक्रमों का प्रतिनिधित्व करने के लिए जोड़े गए थे, जैसे पैरामीटर पैक में तत्वों के सूचकांक हैं।[18] वैश्विक एसटीडी::प्रारम्भ/ एसटीडी::अंत फंक्शन को बढ़ाया गया std::cbegin/std::cend कार्य, जो निरंतर पुनरावर्तक लौटाते हैं, और std::rbegin/std::rend और std::crbegin/std::crend जो रिवर्स इटरेटर लौटाते हैं। std::exchange e> फ़ंक्शन टेम्प्लेट एक चर के लिए एक नया मान निर्दिष्ट करता है और पुराना मान लौटाता है।[19]
के नए अधिभार std::equal, std::mismatch, और std::is_permutation दूसरी श्रेणी के लिए पुनरावृत्तियों की एक जोड़ी लें, ताकि कॉलर को अलग से यह जांचने की आवश्यकता न हो कि दो श्रेणियां समान लंबाई की हैं।[20]
std::is_finalई> टाइप विशेषता यह पता लगाती है कि कोई वर्ग चिह्नित है या नहींfinal.std::quotedई> स्ट्रीम I/O मैनिपु