क्या कोई कारण है unique_ptr::reset
में ऐसे अधिभार नहीं हैं जो const deleter&
और deleter&&
अपने रचनाकारों से मेल खाते हैं जो उन्हें दूसरे तर्क के रूप में लेते हैं?क्यों अद्वितीय_ptr :: रीसेट में अधिभार नहीं है जो एक डिलीटर लेता है?
unique_ptr
में संग्रहित डिलीटर को कॉपी किया जाएगा या reset
से तर्क के साथ असाइन किया जाएगा। यदि डिलीटर noncopyable या nonmovable है, reset
के संबंधित अधिभार को संकलित नहीं करेगा। ऐसा लगता है कि यह रचनाकारों के साथ लगातार व्यवहार होगा।
+1 एक 'क्यों' प्रश्न का एकमात्र _authoritative_ जवाब रखने के लिए। – ildjarn
अगर रीसेट फ़ंक्शन था तो क्या यह क्लीनर और साझा_ptr के साथ अधिक संगत नहीं होगा? मेरे लिए, जब आपके पास कस्टम डिलीटर फ़ंक्शन होता है तो यह विशेष रूप से क्लीनर महसूस करता है। उदाहरण के लिए: 'ptr = unique_ptr (new_raw_ptr, deleter_function); 'बनाम' ptr.reset (new_raw_ptr, deleter_function);'। या इससे भी बेहतर अगर हम एक ही deleter_function रख सकते हैं, तो यह होगा: 'ptr.reset (new_raw_ptr);'। –
felipou
@ फ़ेलिपौ: उत्तरार्द्ध काम करता है।पूर्व के लिए, यहां बताया गया है कि * आप * इसे कैसे कर सकते हैं: http://cplusplus.github.io/LWG/lwg-active.html#submit_issue –