को आवंटित मूल्य से वापस लौटा मैं कुछ कोड में एक और बग फिक्स कर रहा था और कुछ कोड में आया जो मैंने सोचा था कि एक बग था; हालांकि, यह कोड जीसीसी 4.4, 4.5, और 4.6 के तहत संकलित करता है और "अपेक्षित" के रूप में कार्य करता है। क्या कोई मुझे बता सकता है कि यह वैध सी ++ है?कॉन्स्ट संदर्भ
struct foo {
int bar;
};
foo myfunction(foo const &orig) {
foo fooOnStack = orig;
fooOnStack.bar *= 100;
return fooOnStack;
}
void myOtherFunction(foo const &orig) {
foo const &retFoo = myfunction();
// perhaps do some tests on retFoo.bar ...
}
यदि यह वैध सी ++ है, तो क्या किसी को कानूनी होने के पीछे तर्क पता है?
कैननिकल तर्क यहां उल्लिखित है: [GotW # 88: "सबसे महत्वपूर्ण आधार" के लिए एक उम्मीदवार (http://herbsutter.com/2008/01/01/gotw-88-a-candidate-for- सर्वाधिक महत्वपूर्ण-स्थिरांक /)। – ildjarn
इसके अलावा, मानक सी ++ होने का समर्थन करने वाले मानदंड सी ++ 03 §12.2/5 में हैं। – ildjarn
धन्यवाद, मैंने आज कुछ सी ++ सीखा। यह समझ में आता है, लेकिन मैंने पहले कभी इसका इस्तेमाल नहीं किया था, और पता था कि एक गैर-कॉन्स संदर्भ में लौटने की अनुमति नहीं थी। – graphicsMan