Friday, 15 February 2013

templates - What's the formal of C++ const reference (not reference to const, but const reference) -


दिये गये

  टेम्पलेट & lt; वर्ग प्रकार & gt; शून्य कोस्ट (प्रकार कॉन्स्ट) {} void constref_call () {डबल एक्स; Constref & lt; डबल & amp; & gt; (x); } // ठीक टेम्पलेट & lt; वर्ग प्रकार & gt; संदर्भ = प्रकार का उपयोग कर; Void foo (संदर्भ & lt; const int & gt; const x) {(शून्य) x; } // ठीक टेम्पलेट & lt; वर्ग प्रकार & gt; शून्य पैर (संदर्भ & lt; const प्रकार & gt; आर्ग) {(शून्य) arg; } शून्य foot_call () {पैर (3.14); } // डीड्यूसेस एजीआर प्रकार कोई समस्या नहीं है। शून्य foo2 (इंट कंट एंड कंपास एक्स) {(शून्य) x; } //!   

विज़ुअल सी ++ और जी ++ दोनों के साथ, इस कोड को संकलित किया गया है जैसा कि केवल foo2 एक संकलन त्रुटि को उत्तेजित करता है।

वैसे ही संहिता त्रुटि में परिणाम प्राप्त करने के लिए foo पसंद आया है, ताकि मूल भाषा की & quot; असफल प्रयोग & rdquo; जैसा कि एक ही बाधाओं के साथ उस नोटेशन का उपयोग करने में सक्षम हो; ऑपरेटर संकेतन।

मुझे संदेह है कि foo संकलन समान कारण है क्योंकि कॉल constref_call में कॉल करता है, कुछ छूट टेम्पलेट्स, लेकिन यह वास्तव में इतना है & ndash; मानक के औपचारिक नियम क्या हैं?

सी +11 11, 8.3.2 / 1 उद्धरण: < / P>

... सीवी-योग्य संदर्भ, जब सीवाई-क्वालिफायरों को टाइप टाइपफेफ (7.1.3) या टेम्पलेट प्रकार तर्क (14.3) के उपयोग के माध्यम से पेश किया जाता है, तब तक बीमार तरीके से बनाया जाता है जो मामले सीवी-क्वालिफायरों को नजरअंदाज कर दिया जाता है। ...


No comments:

Post a Comment