सी ++ में वापस लौटाएगा std::vector
स्थानीय चर हमेशा स्थानांतरित हो जाएगा?
एक स्थानीय चर के लिए, यहां तक कि एक उप-मूल्य पैरामीटर, संकलक, हमेशा प्रयास यह पहली बार स्थानांतरित करने के लिए (यदि न चाल है और न ही प्रतिलिपि जो भी कारण के लिए elided किया जा सकता है मानदंड हैं, भले ही मिला)। अगर यह काम नहीं है, यह एक प्रति के साथ फिर से कोशिश करता है:
§12.8 [class.copy] p32
जब एक प्रतिलिपि आपरेशन के इलिजन के लिए मानदंडों को पूरा कर रहे हैं या तथ्य यह है कि स्रोत ऑब्जेक्ट एक समारोह पैरामीटर है के लिए सेव पूरी की जाएगी, और प्रतिलिपि बनाने वाली ऑब्जेक्ट को प्रतिलिपि के लिए कन्स्ट्रक्टर का चयन करने के लिए एक लवल्यू, ओवरलोड रिज़ॉल्यूशन द्वारा नामित किया गया है, जैसा कि ऑब्जेक्ट को एक रावल्यू द्वारा निर्दिष्ट किया गया था।यदि ओवरलोड रिज़ॉल्यूशन विफल रहता है, या यदि चयनित कन्स्ट्रक्टर के पहले पैरामीटर का प्रकार ऑब्जेक्ट के प्रकार (संभावित रूप से सीवी-क्वालिफाइड) के लिए एक रावल्यू संदर्भ नहीं है, तो ऑब्जेक्ट को एक लवल्यू के रूप में देखते हुए ओवरलोड रिज़ॉल्यूशन फिर से किया जाता है। [नोट: इस दो चरण के अधिभार रिज़ॉल्यूशन को निष्पादित किया जाना चाहिए चाहे कॉपी प्रतिलिपि हो। यह कथन को निर्धारित करने के लिए कन्स्ट्रक्टर को निर्धारित करता है, और कॉल का विस्तार होने पर भी चयनित कन्स्ट्रक्टर को सुलभ होना चाहिए। -end नोट]
क्या होगा यदि वेक्टर स्थानीय चर के बजाय स्थानीय चर का सदस्य है?
एक सबोबजेक्ट को स्थानांतरित करने की कोशिश नहीं की जाएगी, क्योंकि यह कॉपी एलिशन के मानदंडों को पूरा नहीं करता है। (जो गूंगा, IMHO, लेकिन वह यह कैसे वर्तमान में है। मुझे नहीं लगता कि दो जोड़ा जाना चाहिए, के बाद से एक subobject बिल्कुल ठीक है अगर यह स्थानीय है ले जाया जा सकता है।)
जाहिर है एक वैश्विक चर लौटने
होगा स्थानांतरित नहीं किया जा सकता है। अन्य मामलों को क्यों नहीं ले जाया जाएगा?
एक संदर्भ स्पष्ट रूप से स्थानांतरित नहीं किया जाएगा। इसके अलावा, मैं वास्तव में किसी और चीज के बारे में सोच नहीं सकता।
यह भी देखें [यह प्रश्न] (http://stackoverflow.com/q/9532608/500104)। – Xeo