C++11 में rvalue, lvalue, xvalue, glvalue और prvalue क्या हैं?
मैं C++11 सीख रहा हूँ और मुझे नए शब्द मिले: rvalue, lvalue, xvalue, glvalue और prvalue। पहले पुराने C++ में मैं सोचता था कि सब कुछ सरल है: lvalue वह है जो असाइनमेंट के बाईं ओर होता है (जैसे, वेरिएबल), और rvalue वह है जो दाईं ओर होता है (जैसे, संख्या 42)। लेकिन मूव सिमैंटिक्स और std::move के आने से सब कुछ जटिल हो गया।
उदाहरण के लिए, मैंने यह कोड लिखा:
```cpp
int x = 10; // x — lvalue, 10 — prvalue
int&& rref = std::move(x); // std::move(x) क्या है? और rref?
int y = x + 5; // (x + 5) — यह क्या है?
```
मैंने सुना है कि पाँच श्रेणियाँ हैं, लेकिन मैं समझ नहीं पा रहा हूँ कि व्यवहार में उन्हें कैसे अलग करूँ। डॉक्यूमेंटेशन में 'पहचान' और 'स्थानांतरण क्षमता' के बारे में लिखा है, लेकिन मुझे सरल उदाहरण चाहिए। std::move(x) rvalue क्यों लौटाता है, जबकि x lvalue है? और xvalue क्या है? कृपया शुरुआती के लिए कोड उदाहरणों के साथ समझाएँ।
मुझे लगता है कि यह मूव सिमैंटिक्स और परफेक्ट फॉरवर्डिंग को समझने के लिए महत्वपूर्ण है। विस्तृत विवरण के लिए आभारी रहूँगा!
<<>>