Avatar ·

std::move के बिना फ़ंक्शन से std::unique_ptr क्यों लौटाया जा सकता है?

नमस्ते! मैंने हाल ही में C++11 और स्मार्ट पॉइंटर्स सीखना शुरू किया है, और मुझे std::unique_ptr को लेकर भ्रम हो गया है। मैं जानता हूँ कि unique_ptr को कॉपी नहीं किया जा सकता — केवल मूव किया जा सकता है। मूव करने के लिए आमतौर पर std::move() का उपयोग किया जाता है। लेकिन मैंने एक अजीब व्यवहार देखा: जब मैं एक फ़ंक्शन लिखता हूँ जो unique_ptr बनाता और लौटाता है, तो कंपाइलर कोई त्रुटि नहीं देता, भले ही मैं std::move() को कॉल न करूँ। यहाँ एक उदाहरण है: ```cpp #include std::unique_ptr createInt() { std::unique_ptr ptr = std::make_unique(42); return ptr; // बिना std::move() के — और यह काम करता है! } int main() { std::unique_ptr p = createInt(); return 0; } ``` यह कंपाइल क्यों होता है? आखिर unique_ptr कॉपी करने की अनुमति नहीं देता! अगर मैं किसी अन्य फ़ंक्शन में सामान्य वेरिएबल के साथ ऐसा ही करने की कोशिश करूँ, उदाहरण के लिए...

अभी तक कोई उत्तर नहीं।

लॉग इन करें उत्तर देने के लिए

ब्लॉग