shared_ptr के लिए समानता ऑपरेटर के रूप में निम्नानुसार परिभाषित किया गया है:सी ++ shared_ptr समानता ऑपरेटर
template<class T, class U> inline bool operator==(
shared_ptr<T> const & a, shared_ptr<U> const & b)
{
return a.get() == b.get();
}
यह टूट लगता है। क्या समानता को आगे बढ़ाने के लिए बेहतर नहीं होगा कि ए और बी क्या इंगित कर रहे हैं? या पुस्तकालय के उपयोगकर्ताओं पर यह एक अनुचित प्रतिबंध होगा (उस में उन्हें समानता ऑपरेटर प्रदान करना होगा)?
यदि मेरे पास कोई नक्शा या हैश_टेबल है जिसमें shared_ptrs हैं, तो वर्तमान परिभाषा समानता को अनुपयोगी बनाती है। उदाहरण के लिए, पर विचार
std::map<int, std::tr1::shared_ptr<T> > m1, m2;
हम चाहते हैं कि प्रत्येक के लिए ptrs एम 1 में int जाँच करना चाहते हैं नहीं होगा और एम 2 एक ही मूल्य की ओर इशारा करते हैं?
मैं एम 1, एम 2 आउट (प्रत्येक से सेट का निर्माण, रास्ते में shared_ptrs dereferencing) से सेट करके अपनी खुद की समानता लागू कर सकता हूं। क्या कोई एसटीएल चाल है जो या साझा_प्टर्स की उपस्थिति में समानता का परीक्षण करने के किसी अन्य तरीके को अच्छी तरह से पूरा करेगी?
यह समानता से आपका क्या मतलब है इस पर निर्भर करता है। साधारण पॉइंटर्स के लिए जिसका अर्थ है "एक ही ऑब्जेक्ट को इंगित करना"। मेरे लिए समानता की इस अवधारणा को share_pointer में विस्तारित करना उचित लगता है। –