कोड के लिए मैं वर्तमान में काम कर रहा हूं, हमें कभी-कभी कुछ पुराने सिस्टम पर संकलन करने की आवश्यकता होती है पुराने कंपाइलर्स के साथ (उदाहरण के लिए- हम पुराने आईबीएम ब्लूजीन/एल पर सिम्स चलाते हैं, जो समर्थन अनुबंध कुछ पुराने सी ++ कंपाइलर को निर्देशित करता है)। कोड स्वयं shared_ptrs का उपयोग करता है, और मूल रूप से std :: tr1 :: shared_ptr का उपयोग करने के लिए लिखा गया था। पुरानी ब्लूजिन मशीन पर संकलन करते समय, मुझे जल्दी से एहसास हुआ कि इसमें कोई tr1 :: कार्यान्वयन नहीं है, और इसलिए मैंने :: shared_ptr को बढ़ावा देने के लिए स्विच किया। बाहर निकलता है एक बूस्ट :: tr1 :: shared_ptr भी है। अब जब हमारे शोध समूह के बाहर कोड का व्यापक रूप से उपयोग किया जा रहा है, पोर्टेबिलिटी और भी महत्वपूर्ण हो रही है।विकसित C++ std :: नेमस्पेस को कैसे संभालें? उदाहरण: std :: tr1 :: shared_ptr vs. std :: shared_ptr बनाम boost :: shared_ptr बनाम boost :: tr1 :: shared_ptr
बड़े-आइश कोडबेस में विकसित मानक लाइब्रेरी समस्याओं के इन प्रकारों को संभालने के लिए (द) सर्वोत्तम अभ्यास क्या है? मुझे लगता है कि नए सी ++ 11 मानक में, shared_ptr अब tr1 नेमस्पेस में नहीं होगा, जो एक और संभावित जोड़ता है: std :: shared_ptr, हालांकि मैं अनुमान लगा रहा हूं कि इसके लिए व्यापक समर्थन एक तरीका होगा। यदि संभव हो तो मैं नवीनतम मानक का उपयोग करना चाहता हूं, लेकिन पोर्टेबिलिटी को बनाए रखने की आवश्यकता है। क्या मुझे बस बढ़ावा देने के साथ रहना चाहिए? अपने प्रश्न
boost::tr1
को
वहां पहले से ही compilers हैं जहां 'std :: shared_ptr' वीसी -2010 और जी ++ के हाल के संस्करणों की तरह उपलब्ध है।यदि आपको विभिन्न कंपाइलरों की भीड़ का समर्थन करने की आवश्यकता है, तो बूस्ट के साथ चिपकना शायद सबसे आसान है। :) – Sven
सिर्फ इसलिए कि shared_ptr को नामस्थान std :: में जोड़ा जाएगा, इसका मतलब यह नहीं है कि यह नामस्थान std :: tr1 :: से * हटा दिया जाएगा *। मुझे पता है कि जीसीसी/libstdC++ आगे बढ़ने दोनों बनाए रखेंगे। वास्तव में, मुझे यकीन है कि विजुअल स्टूडियो वही होगा। – emsr
मुझे लगता है कि यदि आप चारों ओर देखते हैं, तो कम से कम पिछले दो वर्षों में std :: shared_ptr के लिए समर्थन अधिकांश कंप्यूटर्स में बहुत व्यापक है। मैं std :: पहले के साथ चिपके रहूंगा, फिर std :: tr1 :: के लिए देखें, फिर उस क्रम में बढ़ावा देने का प्रयास करें। – emsr