2014-09-12 4 views
14

मुझे चिंता है कि कर्नेल भूमि में मुझे std::move, std::forward, std::initializer_list इत्यादि जैसी चीज़ों तक पहुंच नहीं होगी। हालांकि इनमें से कुछ सुविधाएं भाषा में बनाई गई हैं, फिर भी उन्हें उचित शीर्षलेख और पुस्तकालय कार्यान्वयन की आवश्यकता है। क्या चालान अर्थशास्त्र का लाभ उठाने के लिए निम्नलिखित पर्याप्त है, या क्या मुझे पूर्ण नौ गज की दूरी तय करने और सी ++ लाइब्रेरी बंद करने की आवश्यकता है?क्या मुझे अपने कर्नेल में std :: move पोर्ट करने की आवश्यकता है?

template <typename T> 
typename remove_reference<T>::type&& move(T&& arg) 
{ 
    return static_cast<typename remove_reference<T>::type&&>(arg); 
} 
+6

फ्रीस्टैंडिंग कार्यान्वयन में अभी भी '' होना चाहिए (और ऐसा कुछ नहीं है जिसे आप स्वयं को कोड कर सकते हैं क्योंकि यह संकलक कार्यान्वयन से घनिष्ठ रूप से जुड़ा हुआ है)। 'std :: move' और' std :: forward' आपको स्वयं को कोड करना पड़ सकता है, लेकिन वे केवल सुंदर हैं। अर्थशास्त्र की जरूरतों को ले जाएं (1) कंपाइलर समर्थन और (2) चाल-जागरूक प्रकार। यदि आप सी ++ 03 'std :: वेक्टर' कार्यान्वयन का उपयोग कर रहे हैं, तो आपको 'std :: move' और एक C++ 11 कंपाइलर के साथ भी अर्थशास्त्र को स्थानांतरित नहीं किया जाएगा। –

+0

@ टी.सी. जानकारी के लिए धन्यवाद। Os-dev के लिए – Rigby

+0

+1, जैसा कि मैं करता हूं> o < – ikh

उत्तर

1

ऐसा करना चाहिए, कोई टाइपो नहीं मानना ​​चाहिए। पूर्ण परिभाषा मानक (दो वास्तव में, पुरानी और नई) में दी गई है, और मैंने ठीक से यह किया है: केवल आधिकारिक संस्करण को अपने ही शीर्ष लेख में कॉपी करें, और फिर मेरी विशेष आवश्यकताओं को संबोधित करें और/या पुराने gnu std का समर्थन करें lib लेकिन संकलक groks rvalue संदर्भ।

@ टीसी की चिंता का समाधान करने के लिए, अभी भी अपने स्वयं के चाल-प्रकार के प्रकार लिखने में सक्षम होना और उन्हें उपयोग करने में सक्षम होना उपयोगी है। कार्यों से वापस लौटें, भले ही आपूर्ति किए गए कंटेनर इसके बारे में नहीं जानते। बूस्ट कंटेनर क्लासेस करें, और आप बूस्ट को & & पर बताए गए कॉन्फ़िगरेशन को ओवरराइड कर सकते हैं, यदि आप सभी std :: move, std :: forward, और जो भी आवश्यक है उसे प्रदान नहीं करते हैं। बूस्ट के साथ संकलित कोड के साथ संगतता के लिए, सामान्य रूप से कॉन्फ़िगर किए गए कोड के साथ संगतता के लिए, मुझे मूल रावल संदर्भों और बूस्ट मूव इम्यूलेशन का उपयोग करके एक हाइब्रिड दृष्टिकोण भी मिला है।

संबंधित मुद्दे