2011-01-20 13 views
5

एसटीडी के लिए ऑपरेटर < पर चर्चा पढ़ने :: weak_ptr के बाद, मैं किसी भी कारण है कि परिभाषित std :: हैश एसटीडी के लिए नियंत्रण ब्लॉक का उपयोग करने के :: weak_ptr कार्य नहीं करेगा नहीं देख सकता। मैं यह भी विश्वास नहीं कर सकता कि इसे मानक समिति द्वारा अनदेखा किया गया था। क्या किसी ने इस विषय पर प्रासंगिक चर्चा पढ़ी है?क्यों std था :: हैश C++ 0x में std :: weak_ptr के लिए परिभाषित नहीं?

संपादित करें: एसटीडी के लिए ऑपरेटर < पर चर्चा :: weak_ptr http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1590.html

उत्तर

3

मैं इतिहास के साथ कुछ हद तक परिचित हूँ। एक और बाद में कागज तुम भी पढ़ना चाहिए है:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2637.pdf

और मुझे विश्वास है यह बाद में कागज क्या वर्तमान मसौदे में वास्तव में है। सारांश में, shared_ptr मूल्य आधारित ऑपरेटर <() और स्वामित्व के आधार पर सदस्य कार्यों owner_before है। weak_ptr केवल उत्तरार्द्ध है।

मेरे सबसे अच्छा अनुमान है कि weak_ptr के लिए हैश समर्थन बस गिरा दिया गया है। मेरे ज्ञान के सर्वोत्तम में कमजोर_प्टर के लिए कोई भी हैश समर्थन प्रस्तावित नहीं किया गया है। वहाँ कई, मानकीकरण करने के लिए C++ 0x लाने में कई मुद्दों पर किया गया है, समय और संसाधनों की एक सीमित मात्रा में मुद्दों काम करने के लिए, और कोई संदेह नहीं है वहाँ गलतियों और लापता टुकड़े हो जाएगा।

मैं भी कमजोर_प्टर के लिए हैश समर्थन जोड़ने के बारे में सोचता हूं, इसे मालिक के साथ समान रूप से किया जाना होगा: पहले सदस्य फंक्शन owner_hash को shared_ptr और weak_ptr दोनों में जोड़ें। मुझे संदेह है कि सी ++ 0x के लिए ऐसा करने में बहुत देर हो चुकी है, लेकिन यह एक व्यावहारिक टीआर 2 प्रस्ताव की तरह लगता है।

+0

ऐसा लगता है कि जापान वास्तव में इस की सूचना दी। – SamB

2

यह पता चला है कि जापान ने इसके बारे में शिकायत की है (lwg issue 1406 देखें), और यह है कि हॉवर्ड ने his answer में सुझाव दिया था कि संकल्प के रूप में प्रस्तावित किया गया था। दुर्भाग्यवश, इसे स्थगित कर दिया गया था (संभवतः समय की बाधाओं के कारण)।

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