क्या मानक ठीक से परिभाषित करता है कि एक वस्तु को एक बार ले जाने के बाद मैं क्या कर सकता हूं? मैं सोचता था कि आप एक स्थानांतरित वस्तु से क्या कर सकते हैं क्या यह विनाश है, लेकिन यह पर्याप्त नहीं होगा।
उदाहरण के लिए, swapमानक लाइब्रेरी में परिभाषित फंक्शन टेम्पलेट लें :
template <typename T>
void swap(T& a, T& b)
{
T c = std::move(a); // line 1
a = std::move(b); // line 2: assignment to moved-from object!
b = std::move(c); // line 3: assignment to moved-from object!
}
जाहिर है, स्थानांतरित वस्तुओं से असाइन करना संभव होगा, अन्यथा लाइनें 2 और 3 विफल हो जाएंगी। तो मैं स्थानांतरित वस्तुओं से और क्या कर सकता हूं? वास्तव में मुझे ये विवरण मानक में कहां मिलेंगे?
(वैसे, यह पंक्ति 1 के T c = std::move(a);बजाय क्यों है T c(std::move(a));?)
pop_backएक स्थानांतरित नहीं करना चाहते हैंvector। लेकिन आप निश्चित रूप से पता लगा सकते हैं कि क्या यह हैempty()।