c++ - Can't understand move semantics -


निम्न उदाहरण की तरह एक साधारण उदाहरण में:

  struct MyClass {MyClass () {} मायक्लास (कॉन्स्ट मायक्लास & amp;) {}}; Int main () {std :: vector & lt; MyClass & gt; वस्तुओं; मायक्लस ओज 1; objects.push_back (obj1); के लिए (ऑटो & amp; obj: वस्तु) {} वापसी 0; }  

ऑटो और amp; amp; काम? वर्ग में कोई कदम समर्थन नहीं है, इस कोड को क्या करना चाहिए? मुझे समझ नहीं आ रहा है ..

इस क्रम को क्रम के इटरेटर प्रकार के संदर्भ में प्राप्त प्रकार से घटाना है ; यह एक लावल्यू संदर्भ, MyClass & amp; है। "संदर्भ ढहने" के नियमों से, rvalue संदर्भ lvalue संदर्भ "" lvalue संदर्भ प्रकार देता है। >

तो स्वतः और amp; को MyClass & amp; होना अनुमानित किया गया है।

यदि अनुक्रम में इटरेटर प्रकार होता है जो rvalue संदर्भ, फिर इसके बजाय इसे MyClass & amp; amp; & amp; amp; के रूप में अनुमानित किया जा सकता है, यदि वर्ग उनको समर्थन देता है।


Comments