मानक std::unique_ptr
की एक टेम्पलेट विशेषज्ञता जो सही ढंग से अपने नाशक से delete[]
कॉल प्रदान करता है:क्यों कोई std :: shared_ptr <T[]> विशेषज्ञता नहीं है?
void func()
{
std::unique_ptr<int[]> arr(new int[10]);
.......
}
std::shared_ptr
के साथ इस विशेषज्ञता उपलब्ध नहीं है, इसलिए यह एक Deleter जो सही ढंग से delete[]
कॉल प्रदान करने के लिए के लिए आवश्यक है:
void func()
{
// Usage
shared_ptr array (new double [256], [](double* arr) { delete [] arr; });
..............
}
क्या यह सिर्फ एक निरीक्षण है? (उसी तरह से std::copy_if
है) या क्या कोई कारण है?
एनबी के मामले 3 देखें। बूस्ट में काम के आधार पर सी ++ 17 के लिए इसे जोड़ने का एक नया प्रस्ताव है, http://open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3640.html –
देखें कि बहुत कुछ सरणी के साथ काम करते समय 'shared_ptr' मशीनरी को अक्षम किया जाना चाहिए, जैसे कि सबबोजेक्ट को संदर्भित करने की क्षमता। –