को विधि shared_ptr अंक वस्तु पर कहा जाता है के लिए एक shared_ptr चलती सी ++ 17 क्योंकि x->f
X::f
को तर्क से पहले का मूल्यांकन बनाया गया है, है ना? जहां तक मुझे पता है कि सी ++ के पुराने संस्करणों में ऐसी कोई गारंटी नहीं है। मैं सी ++ 11 और सी ++ 14 में कुछ समान कैसे प्राप्त कर सकता हूं?को देखते हुए</p> <pre><code>struct X { void f(std::shared_ptr<X>); }; auto x(std::make_shared<X>()); </code></pre> <p>मैं शायद सुरक्षित रूप में</p> <pre><code>x->f(std::move(x)); </code></pre> <p>कर सकते हैं
पीएस: नोट std::shared_ptr
के बजाय std::unique_ptr
का उपयोग करते समय भी लागू होता है।
यह भी सवाल है कि क्या यह एक वस्तु को नष्ट करने के लिए सुरक्षित है का तात्पर्य है एक ही वस्तु के सदस्य फ़ंक्शन के दायरे को ले जाने के भीतर/जब भीतर। जिज्ञासा से बाहर: आप ऐसा क्यों करना चाहते हैं? – Pixelchemist