2012-03-09 20 views
11

का लाभ उठाते हैं Rvalue संदर्भ और मूव semantics एक प्रमुख सी ++ 11 सुविधा है जो अनावश्यक प्रतियों को कम करके कोड को काफी तेज़ी से बढ़ा सकती है। एसटीएल को इस नई सुविधा का उपयोग करने के लिए अद्यतन किया गया है जब एक सी ++ 11/0 एक्स कंपाइलर का उपयोग किया जाता है (उदा। जीसीसी 4.6)कौन सा बूस्ट लाइब्रेरी मूव सेमेन्टिक्स

बूस्ट 1.48 ने पुराने सी ++ 03 कंपाइलर्स पर चाल semantics अनुकरण करने के लिए एक नई पुस्तकालय की शुरुआत की। यह लाइब्रेरी मैक्रोज़ को पेश करके काम करती है जो सी ++ 11 कंपाइलर्स या एम्यूलेटेड रावल्यू के साथ संकलित होने पर कोड को संकलित किया जाता है जब कोड C++ 03 कंपाइलर्स के साथ संकलित किया जाता है।

boost::container के अलावा क्या कोई अन्य बूस्ट लाइब्रेरी अभी तक चलने वाले अर्थशास्त्र का लाभ उठाने के लिए अपडेट की गई है?

क्या कोई रोडमैप विवरण है जब/यदि अन्य अर्थ पुस्तकालयों में सैमांतिक्स को स्थानांतरित किया जाएगा?

boost::multi_index_container ने Boost.MultiIndex Future work पर चाल semantics के अतिरिक्त उल्लेख किया है, क्योंकि यह संस्करण 1.31 में पेश किया गया था।

+0

नोट 11-केवल समर्थन जोड़ा समर्थन करता है : नाम "एसटीएल" बहिष्कृत और संदिग्ध है। इसके बजाए "सी ++ मानक पुस्तकालय" का प्रयोग करें। – Griwes

उत्तर

8

जैसा कि आपने सवाल में कहा था, 1.48 को बढ़ाएं boost::move, एक लाइब्रेरी जो सी ++ 03 के साथ चलने वाले अर्थशास्त्र को अनुकरण करती है। यह आयन गजटानागा द्वारा विकसित किया गया था, जिन्होंने (ज्यादातर) लिखा और वर्तमान में boost::intrusive और boost::container बनाए रखा है।

दोनों घुसपैठ और कंटेनर समर्थन चाल अर्थ विज्ञान - वास्तव boost::intrusive में, boost::container करने के लिए कदम अर्थ विज्ञान का समर्थन करने के क्योंकि boost::container मूल रूप से उनके boost::intrusive समकक्षों लपेटकर द्वारा कार्यान्वित गैर दखल कंटेनर का एक समूह है। मुझे लगता है कि घुसपैठ/कंटेनर boost::move लिखने के लिए प्रेरणा थी, इसलिए यह आश्चर्य की बात नहीं है कि उनके पास बाकी के बढ़ावा पर सिर शुरू हो गया है।

लेकिन यह यहां ध्यान देने योग्य है कि कोई बढ़ावा रोडमैप या कमेटी नहीं है - बूस्ट केवल पुस्तकालयों का संग्रह है जो वितरण, वेबसाइट और समीक्षा/गुणवत्ता नियंत्रण प्रक्रिया साझा करते हैं। आपको प्रत्येक पुस्तकालय को एक अलग परियोजना के रूप में विचार करना होगा, जिसे केवल तब ही अपडेट किया जाएगा जब लेखकों/रखरखाव कार्य करने में रुचि रखते हैं (या निश्चित रूप से, जब आप उन्हें पैच भेजते हैं!)।

  • Boost.Interprocess 1.45 के बाद से समर्थन हासिल है, दोनों सी ++ 11 और सी ++ 03:

    The boost 1.48/1.49/1.50/1.51/1.52 release notes सबसे अच्छी जगह ठोस जवाब के लिए देखने के लिए कर रहे हैं। 1.48 से पहले, इसमें कोड शामिल था जो boost.move बन गया।

  • Boost.Asio 1.47 के बाद से समर्थन है; सी ++ 03
  • Boost.Intrusive में कोई अनुकरण 1.48 में boost.move के माध्यम से समर्थन प्राप्त (सी ++ 11, सी ++ 03)
  • Boost.Container बढ़ावा के माध्यम से समर्थन के साथ 1.48 में नया था .move (सी ++ 11, सी ++ 03)
  • Boost.Icl समर्थन boost.move के माध्यम से 1.49 में प्राप्त (सी ++ 11, सी ++ 03)
  • Boost.Unordered समर्थन प्राप्त 1.4 9 में boost.move के माध्यम से (सी ++ 11, #define के साथ सी ++ में अनुकरण सक्षम करने के लिए 03)
  • बूस्ट।थ्रेड सी ++ 03 1.50 के बाद से अनुकरण डब्ल्यू/boost.move, पुराने संस्करणों है सी ++ 11-केवल समर्थन
  • Boost.Function सी ++ में 1,52
संबंधित मुद्दे