cppreference से: अपने Deleterarray_ptr को array_ptr के सरणी से अब क्यों अनुमति नहीं दी जा रही है?
std::unique_ptr<int[]> arr(new int[1]);
std::shared_ptr<int> ptr(std::move(arr));
shared_ptr
के बाद से प्राप्त (एक std::default_delete<T[]>
:
सी ++ 11 में और सी ++ 14 यह एक
std::shared_ptr<T>
एक सेstd::unique_ptr<T[]>
निर्माण करने के लिए मान्य है ऑब्जेक्ट)unique_ptr
से, सरणी सही ढंग से डिलीओटेड हो जाएगी।यह अब C++ 17 में अनुमत नहीं है। इसके बजाय सरणी फॉर्म
std::shared_ptr<T[]>
का उपयोग किया जाना चाहिए।
सी ++ 17 में इसकी अनुमति क्यों नहीं है? क्या बदल गया?
कुछ रीडिंग अगर आप चाहते हैं: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0414r2.html – Holt