C++14: Difference between revisions

From Vigyanwiki
Line 59: Line 59:
सी++11 ने कॉन्सटेक्सपर-घोषित कार्यों की अवधारणा प्रस्तुत की; कार्य जिसे संकलन समय पर निष्पादित किया जा सकता है। उनके वापसी मूल्यों को उन ऑपरेशनों द्वारा उपभोग किया जा सकता है जिनके लिए निरंतर अभिव्यक्ति की आवश्यकता होती है, जैसे पूर्णांक टेम्पलेट तर्क इत्यादि है। चूँकि, सी++11 कॉन्सटेक्सपर कार्यों में केवल एक ही अभिव्यक्ति हो सकता है जो लौटाया जाता है (साथ ही स्टैटिक एसर्ट और अन्य घोषणाओं की छोटी संख्या है)।
सी++11 ने कॉन्सटेक्सपर-घोषित कार्यों की अवधारणा प्रस्तुत की; कार्य जिसे संकलन समय पर निष्पादित किया जा सकता है। उनके वापसी मूल्यों को उन ऑपरेशनों द्वारा उपभोग किया जा सकता है जिनके लिए निरंतर अभिव्यक्ति की आवश्यकता होती है, जैसे पूर्णांक टेम्पलेट तर्क इत्यादि है। चूँकि, सी++11 कॉन्सटेक्सपर कार्यों में केवल एक ही अभिव्यक्ति हो सकता है जो लौटाया जाता है (साथ ही स्टैटिक एसर्ट और अन्य घोषणाओं की छोटी संख्या है)।


सी++14 इन प्रतिबंधों को शिथिल करता है। Constexpr-घोषित कार्यों में अब निम्नलिखित शामिल हो सकते हैं:<ref name=wong1/>
सी++14 इन प्रतिबंधों को शिथिल करता है। कॉन्सटेक्सपर-घोषित कार्यों में अब निम्नलिखित सम्मिलित हो सकते हैं:<ref name=wong1/>


* को छोड़कर कोई भी घोषणा:
* को छोड़कर कोई भी घोषणा:

Revision as of 20:53, 5 March 2023

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

  • को छोड़कर कोई भी घोषणा:
    • static या thread_local चर।
    • प्रारंभिक के बिना परिवर्तनीय घोषणाएं।
  • सशर्त ब्रांचिंग स्टेटमेंट if और switch.
  • रेंज-आधारित सहित कोई भी लूपिंग स्टेटमेंट for.
  • अभिव्यक्तियाँ जो किसी वस्तु के मूल्य को बदल देती हैं यदि उस वस्तु का जीवनकाल स्थिर अभिव्यक्ति समारोह के भीतर शुरू होता है। इसमें किसी भी गैर-const constexpr-घोषित गैर-स्थैतिक सदस्य कार्य।

goto सी ++ 14 आराम से कॉन्स्टैक्स-घोषित कार्यों में बयान प्रतिबंधित हैं।

साथ ही, सी ++ 11 ने कहा कि सभी गैर-स्थैतिक सदस्य कार्य घोषित किए गए थे constexpr भी स्पष्ट रूप से घोषित किए गए थे const, इसके संबंध में this. वह तब से हटा दिया गया है; गैर-स्थैतिक सदस्य कार्य गैर-स्थैतिक हो सकते हैंconst.[6] हालांकि, उपरोक्त प्रतिबंधों के अनुसार, एक गैर-const constexpr सदस्य फ़ंक्शन केवल एक वर्ग सदस्य को संशोधित कर सकता है यदि उस वस्तु का जीवनकाल निरंतर अभिव्यक्ति मूल्यांकन के भीतर शुरू हुआ हो।

चर टेम्पलेट्स

सी ++ के पूर्व संस्करणों में, केवल फ़ंक्शंस, क्लासेस या टाइप उपनामों को टेम्पलेट किया जा सकता है। सी++14 टेम्पलेटेड वेरिएबल्स के निर्माण की अनुमति देता है। प्रस्ताव में दिया गया एक उदाहरण एक चर है pi जिसे विभिन्न प्रकारों के लिए पाई का मान प्राप्त करने के लिए पढ़ा जा सकता है (जैसे, 3 जब एक अभिन्न प्रकार के रूप में पढ़ा जाता है; के साथ संभव निकटतम मूल्य float, double या long double सटीक जब के रूप में पढ़ा float, double या long double, क्रमश; वगैरह।)।

विशेषज्ञता सहित ऐसी घोषणाओं और परिभाषाओं पर टेम्प्लेट के सामान्य नियम लागू होते हैं।[7][8] <वाक्यविन्यास लैंग = सीपीपी> टेम्पलेट <टाइपनेम टी> constexpr टी पाई = टी (3.141592653589793238462643383);

// सामान्य विशेषज्ञता नियम लागू होते हैं: टेम्पलेट <> constexpr const char* pi<const char*> = pi; </वाक्यविन्यास हाइलाइट>

सकल सदस्य आरंभीकरण

सी ++ 11 ने सदस्य प्रारंभकर्ता जोड़े, यदि कोई निर्माता सदस्य को स्वयं प्रारंभ नहीं करता है तो कक्षा के दायरे में सदस्यों पर लागू होने वाले भाव। सदस्य प्रारंभकर्ताओं के साथ किसी भी वर्ग को स्पष्ट रूप से बाहर करने के लिए समुच्चय की परिभाषा बदल दी गई थी; इसलिए, उन्हें कुल आरंभीकरण का उपयोग करने की अनुमति नहीं है।

सी++14 इस प्रतिबंध को शिथिल करता है,[3]ऐसे प्रकारों पर कुल आरंभीकरण की अनुमति देना। यदि ब्रेस्ड इनिट सूची उस तर्क के लिए कोई मान प्रदान नहीं करती है, तो सदस्य प्रारंभकर्ता इसका ख्याल रखता है।[9]


बाइनरी शाब्दिक

सी ++ 14 में संख्यात्मक अक्षर बाइनरी संख्या में निर्दिष्ट किए जा सकते हैं।[3]सिंटैक्स उपसर्गों का उपयोग करता है 0b या 0B. सिंटैक्स का उपयोग अन्य भाषाओं में भी किया जाता है उदा। जावा (प्रोग्रामिंग भाषा), सी शार्प (प्रोग्रामिंग लैंग्वेज) | सी #, स्विफ्ट (प्रोग्रामिंग भाषा), जाओ (प्रोग्रामिंग भाषा), स्काला (प्रोग्रामिंग भाषा), रूबी (प्रोग्रामिंग भाषा), पायथन (प्रोग्रामिंग लैंग्वेज), OCaml, और एक के रूप में कम से कम 2007 से कुछ सी कंपाइलर्स में अनौपचारिक विस्तार।[10]


अंक विभाजक

सी ++ 14 में, एकल-उद्धरण वर्ण को पूर्णांक शाब्दिक # अंकों के विभाजक के रूप में संख्यात्मक शाब्दिक, दोनों पूर्णांक शाब्दिक और फ्लोटिंग पॉइंट शाब्दिक के रूप में मनमाने ढंग से उपयोग किया जा सकता है।[11] यह मानव पाठकों के लिए उपकरना के माध्यम से बड़ी संख्या को पार्स करना आसान बना सकता है।

<वाक्यविन्यास लैंग = सीपीपी> ऑटो पूर्णांक_लिटरल = 1'000'000; ऑटो फ्लोटिंग_पॉइंट_लिटरल = 0.000'015'3; ऑटो बाइनरी_लिटरल = 0b0100'1100'0110; ऑटो a_dozen_crores = 12'00'00'000; </वाक्यविन्यास हाइलाइट>

सामान्य लैम्ब्डा

सी ++ 11 में, अज्ञात फ़ंक्शन पैरामीटर को ठोस प्रकारों के साथ घोषित करने की आवश्यकता है। सी ++ 14 इस आवश्यकता को आराम देता है, जिससे लैम्ब्डा फ़ंक्शन पैरामीटर को घोषित किया जा सकता है auto प्रकार विनिर्देशक।[7] <वाक्यविन्यास लैंग = सीपीपी> ऑटो लैम्ब्डा = [] (ऑटो एक्स, ऑटो वाई) {रिटर्न एक्स + वाई;}; </वाक्यविन्यास हाइलाइट>

विषय में auto प्रकार की कटौती, सामान्य लैम्ब्डा टेम्पलेट तर्क कटौती के नियमों का पालन करते हैं (जो समान हैं, लेकिन सभी मामलों में समान नहीं हैं[clarification needed]). उपरोक्त कोड इसके बराबर है:[12] <वाक्यविन्यास लैंग = सीपीपी> struct {

 टेम्पलेट <टाइपनाम टी, टाइपनाम यू>
   ऑटो ऑपरेटर () (टी एक्स, यू वाई) कास्ट {रिटर्न एक्स + वाई;}

} लैम्ब्डा {}; </वाक्यविन्यास हाइलाइट>

सामान्य लैम्ब्डा अनिवार्य रूप से टेम्पलेटेड फ़ैक्टर लैम्ब्डा हैं।

लैम्ब्डा कैप्चर एक्सप्रेशंस

सी++11 लैम्ब्डा फ़ंक्शंस मूल्य-कॉपी या संदर्भ द्वारा उनके बाहरी दायरे में घोषित चर को कैप्चर करता है। इसका मतलब है कि लैम्ब्डा के मूल्य सदस्य केवल-चलने वाले प्रकार नहीं हो सकते हैं।[13] सी ++ 14 कैप्चर किए गए सदस्यों को मनमाने ढंग से अभिव्यक्तियों के साथ प्रारंभ करने की अनुमति देता है। यह वैल्यू-मूव द्वारा कब्जा करने और लैम्ब्डा के मनमानी सदस्यों को घोषित करने की अनुमति देता है, बाहरी दायरे में एक समान रूप से नामित चर के बिना।[7]

यह प्रारंभिक अभिव्यक्ति के उपयोग के माध्यम से किया जाता है:

<वाक्यविन्यास लैंग = सीपीपी> ऑटो लैम्ब्डा = [मूल्य = 1] {वापसी मूल्य;}; </वाक्यविन्यास हाइलाइट>

लैम्ब्डा समारोह lambda रिटर्न 1, जो क्या है value के साथ प्रारंभ किया गया था। घोषित कैप्चर प्रारंभकर्ता अभिव्यक्ति से प्रकार को कम करता है जैसे कि द्वारा auto.

यह मानक के उपयोग के माध्यम से चाल से कब्जा करने के लिए इस्तेमाल किया जा सकता है std::move समारोह:

<वाक्यविन्यास लैंग = सीपीपी> std::unique_ptr<int> ptr(new int(10)); ऑटो लैम्ब्डा = [मूल्य = एसटीडी :: चाल (पीटीआर)] {वापसी * ​​मूल्य;}; </वाक्यविन्यास हाइलाइट>

=== विशेषता [[deprecated]]=== deprecated ई> विशेषता एक इकाई को पदावनत करने की अनुमति देती है, जो इसे अभी भी उपयोग करने के लिए कानूनी बनाती है लेकिन उपयोगकर्ताओं को यह नोटिस देती है कि उपयोग को हतोत्साहित किया जाता है और संकलन के दौरान एक चेतावनी संदेश मुद्रित किया जा सकता है। एक वैकल्पिक स्ट्रिंग शाब्दिक के तर्क के रूप में प्रकट हो सकता है deprecated, पदावनति के औचित्य की व्याख्या करने और प्रतिस्थापन का सुझाव देने के लिए। <वाक्यविन्यास लैंग = सीपीपी> बहिष्कृत int f();

पदावनत (g() थ्रेड-असुरक्षित है। इसके बजाय h() का उपयोग करें) शून्य जी (इंट एंड एक्स);

शून्य एच (इंट एंड एक्स);

शून्य परीक्षण () {

 इंट ए = एफ (); // चेतावनी: 'एफ' बहिष्कृत है
 जी (ए); // चेतावनी: 'जी' बहिष्कृत है: जी() थ्रेड-असुरक्षित है। इसके बजाय एच() का प्रयोग करें

} </वाक्यविन्यास हाइलाइट>

नई मानक पुस्तकालय सुविधाएँ

साझा म्यूटेक्स और लॉकिंग

सी ++ 14 एक साझा समयबद्ध म्यूटेक्स और एक सहयोगी साझा लॉक प्रकार जोड़ता है।[14][15]


साहचर्य कंटेनरों में विषम लुकअप

सी ++ मानक पुस्तकालय चार सहयोगी कंटेनर वर्गों को परिभाषित करता है। ये वर्ग उपयोगकर्ता को उस प्रकार के मूल्य के आधार पर मूल्य देखने की अनुमति देते हैं। नक्शा कंटेनर उपयोगकर्ता को एक कुंजी और एक मान निर्दिष्ट करने की अनुमति देता है, जहां कुंजी द्वारा लुकअप किया जाता है और एक मान देता है। हालाँकि, लुकअप हमेशा विशिष्ट कुंजी प्रकार द्वारा किया जाता है, चाहे वह मानचित्र की तरह कुंजी हो या सेट के रूप में स्वयं मान हो।

सी ++ 14 लुकअप को मनमाना प्रकार के माध्यम से करने की अनुमति देता है, जब तक कि तुलना ऑपरेटर उस प्रकार की तुलना वास्तविक कुंजी प्रकार से कर सकता है।[16] यह एक मानचित्र की अनुमति देगा std::string ए के खिलाफ तुलना करने के लिए कुछ मूल्य const char* या कोई अन्य प्रकार जिसके लिए a operator< अधिभार उपलब्ध है। यह a में समग्र वस्तुओं को अनुक्रमित करने के लिए भी उपयोगी है std::set उपयोगकर्ता को मजबूर किए बिना एकल सदस्य के मूल्य से find एक डमी वस्तु बनाने के लिए (उदाहरण के लिए एक संपूर्ण बनाना struct Person नाम से किसी व्यक्ति को खोजने के लिए)।

पिछली संगतता को बनाए रखने के लिए, विषम लुकअप की अनुमति केवल तभी दी जाती है जब साहचर्य कंटेनर को दिया गया तुलनित्र इसकी अनुमति देता है। मानक पुस्तकालय कक्षाएं std::less<> और std::greater<> विषम लुकअप की अनुमति देने के लिए संवर्धित हैं।[17]


मानक उपयोगकर्ता परिभाषित शाब्दिक

सी ++ 11 ने उपयोगकर्ता परिभाषित शाब्दिक प्रत्यय के लिए सिंटैक्स को परिभाषित किया, लेकिन मानक पुस्तकालय ने उनमें से किसी का भी उपयोग नहीं किया। सी ++ 14 निम्नलिखित मानक अक्षर जोड़ता है:[16]

  • एस, विभिन्न बनाने के लिए std::basic_string प्रकार।
  • एच, मिनट, एस, एमएस, यूएस, एनएस, संबंधित बनाने के लिए std::chrono::duration समय अंतराल।
  • if , i , il , संबंधित बनाने के लिए std::complex<float>, std::complex<double> और std::complex<long double> काल्पनिक संख्या।

<वाक्यविन्यास लैंग = सीपीपी> ऑटो स्ट्र = हैलो वर्ल्ड एस; // ऑटो स्ट्रिंग घटाता है ऑटो ड्यूर = 60s; // ऑटो क्रोनो :: सेकेंड घटाता है ऑटो जेड = 1i; // ऑटो जटिल <डबल> घटाता है </वाक्यविन्यास हाइलाइट>

दो एस शाब्दिक बातचीत नहीं करते हैं, क्योंकि स्ट्रिंग केवल स्ट्रिंग अक्षर पर चलती है, और सेकेंड के लिए केवल संख्याओं पर ही चलती है।[18]


=== टाइप === के माध्यम से टपल एड्रेसिंग std::tuple ई> सी ++ 11 में पेश किया गया प्रकार टाइप किए गए मानों को एक संकलन-समय निरंतर पूर्णांक द्वारा अनुक्रमित करने की अनुमति देता है। सी ++ 14 इसे इंडेक्स के बजाय टाइप द्वारा टपल से लाने की अनुमति देने के लिए विस्तारित करता है।[16]यदि टपल में एक से अधिक प्रकार के तत्व हैं, तो एक संकलन-समय त्रुटि परिणाम:[19] <वाक्यविन्यास लैंग = सीपीपी> टपल <स्ट्रिंग, स्ट्रिंग, इंट> टी (फू, बार, 7); int i = get<int>(t); // मैं == 7 int j = get<2>(t); // पहले जैसा: j == 7 स्ट्रिंग एस = <स्ट्रिंग> (टी) प्राप्त करें; // अस्पष्टता के कारण संकलन-समय त्रुटि </वाक्यविन्यास हाइलाइट>

छोटी पुस्तकालय सुविधाएँ

std::make_unique जैसे प्रयोग कर सकते हैं std::make_shared के लिए std::unique_ptr वस्तुओं।[7]

std::integral_constant एक प्राप्त किया operator() अधिभार निरंतर मान वापस करने के लिए।[16]

वर्ग टेम्पलेट std::integer_sequence और संबंधित उपनाम टेम्पलेट संकलन-समय पूर्णांक अनुक्रमों का प्रतिनिधित्व करने के लिए जोड़े गए थे, जैसे पैरामीटर पैक में तत्वों के सूचकांक।[20] वैश्विक std::begin/std::end कार्यों को बढ़ाया गया std::cbegin/std::cend कार्य, जो निरंतर पुनरावर्तक लौटाते हैं, और std::rbegin/std::rend और std::crbegin/std::crend जो रिवर्स इटरेटर लौटाते हैं। std::exchange e> फ़ंक्शन टेम्प्लेट एक चर के लिए एक नया मान निर्दिष्ट करता है और पुराना मान लौटाता है।[21] के नए अधिभार std::equal, std::mismatch, और std::is_permutation दूसरी श्रेणी के लिए पुनरावृत्तियों की एक जोड़ी लें, ताकि कॉलर को अलग से यह जांचने की आवश्यकता न हो कि दो श्रेणियां समान लंबाई की हैं।[22]

std::is_final ई> टाइप विशेषता यह पता लगाती है कि कोई वर्ग चिह्नित है या नहीं final. std::quoted ई> स्ट्रीम I/O मैनिपुलेटर आउटपुट पर सीमांकक (दोहरे-उद्धरणों के लिए डिफ़ॉल्ट) रखकर और उन्हें इनपुट पर अलग करके, और किसी भी एम्बेडेड सीमांकक से बचकर, एम्बेडेड रिक्त स्थान के साथ तार डालने और निकालने की अनुमति देता है।[23]


संकलक समर्थन

बजना ने 3.4 में सी++14 के लिए समर्थन समाप्त कर दिया, हालांकि मानक नाम सी++1वाई के तहत, और क्लैंग 6 में सी++14 को डिफ़ॉल्ट सी++ मानक बनाया।[24] GNU कंपाइलर संग्रह ने GCC 5 में सी++14 के लिए समर्थन समाप्त कर दिया, और सी++14 को GCC 6 में डि