Avatar ·

C++ में rvalues, lvalues, xvalues, glvalues और prvalues क्या हैं?

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