Avatar ·

C++11 में T&& (डबल एम्परसेंड) का क्या मतलब है?

नमस्ते! मैंने C++11 सीखना शुरू किया है और कोड में नई नोटेशन `T&&` देखी है। मैं समझता हूँ कि `&` एक reference है, और `&&` logical AND है। लेकिन types के संदर्भ में यह कुछ और है। उदाहरण के लिए, मैंने यह कोड देखा: ```cpp template void foo(T&& arg) { // कुछ करते हैं } ``` और यह भी: ```cpp void bar(std::vector&& vec) { // ... } ``` पहले मैंने सोचा कि `T&&` एक "reference to reference" है, जो बेमानी लगता है। फिर पढ़ा कि इसे "rvalue reference" कहते हैं। लेकिन मुझे समझ नहीं आ रहा कि इसकी ज़रूरत क्यों है। `T&` और `T&&` में क्या अंतर है? मुझे `T&` या `const T&` के बजाय `T&&` कब उपयोग करना चाहिए? और "perfect forwarding" क्या है, जिसके बारे में सब बात कर रहे हैं? कृपया सरल उदाहरणों से समझाएँ। मुझे लगता है कि मैं आधुनिक C++ में कुछ महत्वपूर्ण चीज़ छोड़ रहा हूँ। <<>>

संक्षिप्त उत्तर: Rvalue references और move semantics

C++11 में T&& एक rvalue reference (temporary object का reference) है। यह अनुमति देता है