मैं कम से [VC10 के] unique_ptr देख रहा हूँ और वे करते हैं कुछ चीज़ें मुझे समझ नहीं आता:मुझे remove_reference और add_reference का उपयोग कब करना चाहिए?
typedef typename tr1::remove_reference<_Dx>::type _Dx_noref;
_Dx_noref& get_deleter()
{ // return reference to deleter
return (_Mydel);
}
unique_ptr(pointer _Ptr,
typename _If<tr1::is_reference<_Dx>::value, _Dx,
const typename tr1::remove_reference<_Dx>::type&>::_Type _Dt)
: _Mybase(_Ptr, _Dt)
{ // construct with pointer and (maybe const) deleter&
}
typename tr1::add_reference<_Ty>::type operator*() const
{ // return reference to object
return (*this->_Myptr);
}
बस लिख नहीं चाहेंगे _Dx & या _Ty & एक ही बात हो सकता है?
मैं वास्तव में समझते हैं कि वे क्यों इसे यहाँ हालांकि किया:
unique_ptr(pointer _Ptr, typename tr1::remove_reference<_Dx>::type&& _Dt)
: _Mybase(_Ptr, _STD move(_Dt))
{ // construct by moving deleter
}
उत्तर यह है कि आपको सी ++ सीखने की आवश्यकता है, और फिर आपको यह पता होना चाहिए कि सही चीज़ कैसे पूछें। मुझे खेद है कि अगर यह कठोर लगता है, लेकिन एक बार जब आप टेम्पलेट्स और तर्क कटौती पर दृढ़ समझ लेते हैं, तो आप इसे समझने में सक्षम होंगे। लेकिन गहरे छोर पर कूदने का कोई मतलब नहीं है, * खासकर * वास्तविक दुनिया पुस्तकालय कार्यान्वयन को देखकर। यह एक पाठ्यपुस्तक पढ़ने के बजाय फारस में कलाकृतियों को खोदकर प्राचीन ग्रीक सीखने की कोशिश की तरह है। –
@ केरेकस्क: कभी-कभी पूरी पाठ्यपुस्तक की तुलना में एक अच्छी तरह से समझाया गया उदाहरण से सीखना बहुत आसान होता है। इसके अलावा, अधिकांश पाठ्यपुस्तक इस सामग्री को भी कवर नहीं करेंगे, क्योंकि वे भाषा में मौजूद रावल-संदर्भ लिखे गए थे। यह एक वैध और अच्छी तरह से पूछे जाने वाले प्रश्न है, कि मैं सी ++ सीख रहे बहुत से लोगों के लिए उपयोगी होने की कल्पना कर सकता हूं। – Mankarse
@KerrekSB यह बिल्कुल ठीक नहीं है जिसे मैं देख सकता हूं। यहां तक कि अगर मैंने इस नियम में ऐसा किया जो सीटीओ को ऐसा करने की ज़रूरत है, तो शायद मैं इसे किसी भी उदाहरण के बिना यहां जोड़ नहीं सकता। एक और नोट पर, क्या आप कृपया मेरी सभी पोस्टों को फ्लेम करना बंद कर सकते हैं? आपको स्पष्ट रूप से मेरे साथ समस्या है (मुझे परवाह नहीं है क्यों)। – David