क्योंकि std::string
एक सदस्य प्रकार के रूप में परिभाषित +=
ऑपरेटर के साथ एक वर्ग प्रकार है।
और मानक आपको रैल्यू पर सदस्य कार्यों को कॉल करने की अनुमति देता है।
Comeau C/C++ 4.3.10.1 (Oct 6 2008 11:28:09) for ONLINE_EVALUATION_BETA2
Copyright 1988-2008 Comeau Computing. All rights reserved.
MODE:strict errors C++ C++0x_extensions
"ComeauTest.c", line 7: error: expression must be a modifiable lvalue
foo().x = 666; // !Nah, can't assign to rvalue of built-in type.
^
1 error detected in the compilation of "ComeauTest.c".
हालांकि, compilers अलग (या अलग करने के लिए प्रयोग किया जाता) कैसे सख्ती से वे इस सूक्ष्म नियम लागू के बारे में, या:
इस बात का एक मूर्खतापूर्ण परिणाम यह है कि
struct S { int x; };
S foo() { return S(); }
int main()
{
foo() = S(); // OK, uses member assignment operator.
foo().x = 666; // !Nah, can't assign to rvalue of built-in type.
}
संकलन परिणाम है अगर सब पर।
चियर्स & hth।,
स्रोत
2011-10-22 17:13:12
ठीक है, लेकिन 'int' ऑपरेटर '+ 'के लिए भी परिभाषित किया गया है। – Vlad
@downvoter: क्यों? – Vlad
@ अनामित डाउनवॉटर: कृपया अपने डाउनवोट को समझाएं ताकि अन्य आपकी अंतर्दृष्टि से लाभ उठा सकें, या कुछ बेवकूफ कारणों को अनदेखा कर सकें। –