पढ़ते समय यह स्पष्टीकरण lvalues और rvalues पर, कोड की इन पंक्तियों में मेरे लिए बाहर अटक:
int& foo();
foo() = 42; // OK, foo() is an lvalue
मैंने इसे g ++ में आज़माया, लेकिन कंपाइलर "foo () के लिए अपरिभाषित संदर्भ" कहता है। अगर मैं जोड़ूं
int foo()
{
return 2;
}
int main()
{
int& foo();
foo() = 42;
}
यह ठीक संकलन करता है, लेकिन इसे चलाने से एक विभाजन दोष होता है । बस रेखा
int& foo();
अपने आप में दोनों संकलन करता है और बिना किसी समस्या के चलता है।
इस कोड का क्या अर्थ है? आप एक फ़ंक्शन कॉल के लिए एक मूल्य कैसे निर्दिष्ट कर सकते हैं, और यह एक प्रतिद्वंद्विता क्यों नहीं है?