यदि मैं move
shared_ptr
'a' shared_ptr
'बी' में 'ए' शून्य होने की गारंटी है?निर्दिष्ट किए जाने के बाद किसी भी मानक वर्ग की स्थिति निर्दिष्ट है?
मानक श्रेणी निर्दिष्ट होने के बाद मानक वर्ग है?
यदि मैं move
shared_ptr
'a' shared_ptr
'बी' में 'ए' शून्य होने की गारंटी है?निर्दिष्ट किए जाने के बाद किसी भी मानक वर्ग की स्थिति निर्दिष्ट है?
मानक श्रेणी निर्दिष्ट होने के बाद मानक वर्ग है?
सामान्य 17.6.5.15/1 में लागू होता है:
सी ++ मानक पुस्तकालय में परिभाषित प्रकार के ऑब्जेक्ट (12.8) से ले जाया जा सकता है। चालान संचालन स्पष्ट रूप से निर्दिष्ट या स्पष्ट रूप से उत्पन्न किया जा सकता है। अन्यथा निर्दिष्ट किए जाने तक, इस तरह की चालित वस्तुओं को वैध लेकिन अनिर्दिष्ट स्थिति में रखा जाएगा।
इस प्रकार आप किसी भी कार्य को कॉल कर सकते हैं जिसके लिए कोई पूर्व शर्त नहीं है।
यदि निर्दिष्ट है, what @Xeo said लागू होता है।
यदि निर्दिष्ट है, तो यह उनके कन्स्ट्रक्टर के तहत है और (यदि असाइन करने योग्य) असाइनमेंट ऑपरेटर उपखंड है। shared_ptr
के लिए हमने:
§20.7.2.2.1 [util.smartptr.shared.const]
shared_ptr(shared_ptr&& r) noexcept;
template<class Y> shared_ptr(shared_ptr<Y>&& r) noexcept;
p20 टिप्पणी: दूसरे निर्माता अधिभार संकल्प में भाग नहीं होगा जब तक कि
Y*
T*
के लिए परिवर्तनीय है।
पी 21 प्रभाव:r
सेshared_ptr
उदाहरण ले जाएं।
पी 22 पोस्टकंडिशन:*this
मेंr
का पुराना मान होगा।r
खाली होगा।r.get() == 0
।
shared_ptr
का काम ऑपरेटरों मूल रूप से कर रहे हैं एक अस्थायी (ले जाया गया है, तो rvalue) तर्क से निर्मित के साथ कॉपी-और-स्वैप द्वारा वर्णन करता है:
§20.7.2.2.3 [util.smartptr.shared.assign]
shared_ptr& operator=(shared_ptr&& r) noexcept;
template<class Y> shared_ptr& operator=(shared_ptr<Y>&& r) noexcept;
p4 प्रभाव :
shared_ptr(std::move(r)).swap(*this)
के बराबर।
पी 5 रिटर्न:*this
।
यदि निर्दिष्ट नहीं है, what @AProgrammer said लागू होता है।
मुझे इस पोस्ट के संदर्भ के बाद एक स्टैक ओवरफ़्लो में पकड़ा गया ... –
@Matthieu: लगता है जैसे आपको टीसीओ की आवश्यकता है। ; -] – ildjarn
मैंने अपने उत्तरों को पार किया, हमने दोनों को पूर्ण उत्तर का एक हिस्सा जोड़ा। :) – Xeo
एक चाल के बाद पुरानी वस्तु को दायरे से बाहर निकलने या फिर से उपयोग करने से पहले इसे फिर से शुरू करने के लिए सबसे अच्छा है। कोई पूर्व शर्त नहीं होने वाली विधि पर निर्भर करते हुए रखरखाव की समस्या बन जाएगी (कुल्हाड़ी रखने वाले व्यक्ति ने कहा)। –