कच्चे पॉइंटर्स के बजाय कंटेनर के टेम्पलेट पैरामीटर के रूप में std::reference_wrapper
का उपयोग किस लाभ से किया गया है? यही कारण है कि std::vector<std::reference_wrapper<MyClass> >
बनाम std::vector<MyClass*>
कंटेनरों में कच्चे सूचक के बजाय context_wrapper का उपयोग करने के लाभ?
मैं nulls के बारे में भूल जाते हैं और नहीं सूचक सिंटैक्स का उपयोग करने के लिए पसंद है, लेकिन प्रकार के शब्दाडंबर (यानी vector<reference_wrapper<MyClass> >
) प्लस कॉल साइट उपयोग std :: रैप करने के लिए वास्तविक संदर्भ मुझे बनाता रेफरी चल रहा है लगता है कि यह इसके लायक नहीं है।
मैं उन मामलों का जिक्र कर रहा हूं जिनमें std :: shared_ptr या किसी अन्य स्मार्ट पॉइंटर का उपयोग करना एक विकल्प नहीं है।
क्या संदर्भ_वापर या किसी अन्य कारक का उपयोग करने के अन्य लाभ हैं जिन्हें मैं वर्तमान में ध्यान में नहीं ले रहा हूं? (मुझे लगता है कि मेरा प्रश्न सी ++ 11 के संदर्भ_वापर और बूस्ट दोनों पर लागू होता है)
आईएमओ, संदर्भ गैर-शून्यता एक बड़ा लाभ है, जो अक्सर शब्दशः से अधिक है। लेकिन यह सिर्फ एक अनुभवी नल-नफरत की राय है। – kkm
@kkm यह तर्क अभी भी [not_null] के साथ है (https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#i12-declare-a-pointer-that-must-not-be-null -as-not_null) पॉइंटर्स? – Woofas
@Woofas: शायद नहीं। मैं नवीनतम भाषा प्रस्तावों से बहुत परिचित नहीं हूं। यह एक whoppin '3 दिनों के लिए बाहर गया है! :) – kkm