C++ में rvalues, lvalues, xvalues, glvalues, और prvalues क्या हैं?
- एक lvalue का एक एड्रेस होता है जिसे आपका प्रोग्राम एक्सेस कर सकता है। lvalue एक्सप्रेशंस के उदाहरणों में वेरिएबल नाम शामिल हैं, जिसमें const वेरिएबल्स, ऐरे एलिमेंट्स, lvalue रेफरेंस लौटाने वाले फंक्शन कॉल्स, बिट-फील्ड्स, यूनियन्स, और क्लास मेंबर्स शामिल हैं।
- एक xvalue एक्सप्रेशन का कोई एड्रेस नहीं होता लेकिन इसका उपयोग rvalue रेफरेंस को इनिशियलाइज़ करने के लिए किया जा सकता है, जो एक्सप्रेशन तक पहुंच प्रदान करता है। उदाहरणों में rvalue रेफरेंस लौटाने वाले फंक्शन कॉल्स, ऐरे सबस्क्रिप्ट, आदि शामिल हैं।
- एक glvalue ("जनरलाइज़्ड" lvalue) एक lvalue या एक xvalue होता है।
- एक rvalue (तथाकथित, ऐतिहासिक रूप से, क्योंकि rvalues असाइनमेंट एक्सप्रेशन के दाईं ओर दिखाई दे सकते थे) एक xvalue, एक टेम्पररी ऑब्जेक्ट या उसका सबऑब्जेक्ट, या ऐसा मान होता है जो किसी ऑब्जेक्ट से संबद्ध नहीं है।
- एक prvalue एक्सप्रेशन का कोई एड्रेस नहीं होता जिसे आपका प्रोग्राम एक्सेस कर सके। prvalue एक्सप्रेशंस के उदाहरणों में लिटरल्स, नॉन-रेफरेंस टाइप लौटाने वाले फंक्शन कॉल्स शामिल हैं।