2014-09-27 4 views
5

मुझे एक कंपाइलर त्रुटि मिली और कुछ दिलचस्प देखा। किसी कारण से unique_ptrauto_ptr के लिए एक अधिभार है, लेकिन मैंने सोचा कि auto_ptr पदावनत किया गया था:auto_ptr के लिए unique_ptr का अधिभार क्यों है?

/usr/local/include/c++/4.9.0/bits/unique_ptr.h:228:2: 
note:template<class _Up, class> 
std::unique_ptr<_Tp, _Dp>::unique_ptr(std::auto_ptr<_Up>&&) 
    unique_ptr(auto_ptr<_Up>&& __u) noexcept; 

/usr/local/include/c++/4.9.0/bits/unique_ptr.h:228:2: 
note: template argument deduction/substitution failed: 
main.cpp:41:67: note: mismatched types 'std::auto_ptr<T>' and 'char*' 

इस कोड है कि auto_ptr इस्तेमाल किया साथ क्योंकि पीछे की ओर की अनुकूलता है?

+0

'auto_ptr' का उपयोग करने वाले कोड के साथ पिछड़ा संगतता के अतिरिक्त, यह 'auto_ptr' से' unique_ptr' तक जाने के लिए एक संक्रमण उपकरण के रूप में भी कार्य करता है। किसी को एक बार में एक संपूर्ण कोड बेस को संक्रमण नहीं करना पड़ता है। आप इस रूपांतरण का उपयोग संक्रमण सीमा पार करने के लिए, एक समय में एक टुकड़ा कर सकते हैं। ऐसा कहा जा रहा है कि, फील्ड रिपोर्ट ने वैश्विक खोज/प्रतिस्थापन करने और फिर संक्रमण की विधि के रूप में संकलन-समय विफलताओं की जांच करने पर एक अच्छी सफलता दर का संकेत दिया है। –

उत्तर

2

हाँ, यह, जिसका यह अर्थ (मानक के अनुसार) auto_ptr साथ इंटरॉप, और

स्टैंडर्ड के वर्तमान संस्करण के लिए मानक के लिए है, लेकिन गारंटी नहीं भविष्य संशोधन में मानक का हिस्सा बनने का।

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