नॉन-कॉन्स्ट रेफरेंस बाइंडिंग को प्रतिमूल्य पर अनुमति देना: एक VS2010 विसंगति
सी मानक सख्ती से गैर-कॉन्स्ट संदर्भ को प्रतिमूल्य पर बाध्य करने से मना करता है। हालाँकि, एक अजीब विसंगति में, विज़ुअल स्टूडियो 2010 (SP1) निम्नलिखित कोड को बिना किसी त्रुटि या चेतावनी के संकलित करता है:
string foo() { return "hello"; }
int main() {
string& tem = foo(); // Non-const reference to rvalue
}
वीएस2010 में यह असामान्य व्यवहार एक ज्ञात कंपाइलर एक्सटेंशन से उत्पन्न होता है। जीसीसी और विज़ुअल स्टूडियो 2008 के विपरीत, वीएस2010 कुछ मामलों में गैर-कॉन्स्ट संदर्भों को प्रतिद्वंद्विता से बंधे होने की अनुमति देता है, जैसे कि जब एक अस्थायी ऑब्जेक्ट लौटाने वाले फ़ंक्शन द्वारा प्रतिद्वंद्विता उत्पन्न होती है।
हालांकि यह एक्सटेंशन मानक की अवहेलना करता है, इसे संभवतः सुविधा के लिए लागू किया गया था। हालाँकि, यदि संदर्भ बाध्य होने के बाद प्रतिद्वंद्विता को संशोधित किया जाता है, तो यह अपरिभाषित व्यवहार का कारण बन सकता है। सी मानक के उचित पालन पर। इसलिए, वीएस2010 में भी, गैर-कॉन्स्ट संदर्भों को प्रतिमूल्यों से बांधने से बचने की दृढ़ता से अनुशंसा की जाती है। इसके बजाय, मानक के अनुसार, प्रतिमूल्यों से जुड़ते समय हमेशा कॉन्स्ट संदर्भों का उपयोग करें।अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3