मानक पुस्तकालय का वादा किया है कि आप केवल कॉल एक मानक पुस्तकालय वस्तु पर const
-qualified सदस्य काम करता है, मानक पुस्तकालय कोड एक डेटा दौड़ का कारण नहीं है अगर (सीएफ [res.on.data.races ])।
मानक टेम्पलेट std::hash
, साथ ही अपने सभी अनुमेय विशेषज्ञताओं, साथ ही किसी भी उपयोगकर्ता द्वारा प्रदान की functor कि Hash
आवश्यकताओं को पूरा ([hash.requirements]) एक const
-qualified कॉल ऑपरेटर होना आवश्यक आवश्यकताओं के कारण, और इस प्रकार पुस्तकालय द्वारा प्रदत्त std::hash
विशेषज्ञता का उपयोग किसी दौड़ का कारण नहीं बनना चाहिए। इसके अलावा, [namespace.std] के कारण, कार्यक्रम-प्रदान की गई विशेषज्ञता को समान आवश्यकताओं को पूरा करना होगा।
अंत में, मुझे लगता है कि आप आमतौर पर रिकर्सिवली const
कॉल करने के लिए अपील द्वारा जाति-साहस की गारंटी देता है प्रयोग करेंगे: आप एक से अधिक थ्रेड समवर्ती मानचित्र गए मानों को देखें, तो वे नक्शे के const
इंटरफ़ेस का उपयोग करने के लिए ऊपर पुस्तकालय आह्वान करने के लिए है नियम, लेकिन फिर मानचित्र केवल हैशर (या एक निजी प्रति) के निरंतर मूल्य का उपयोग करने के लिए मिलता है, और इसलिए यह केवल रेस-फ्री हैश कंप्यूटेशंस ही कर सकता है। चाहे एक नस्ल गैर-कॉन्स्ट कॉल ऑपरेटर मौजूद है उस बिंदु पर अपरिपक्व है।
स्रोत
2015-12-20 21:18:53
अन्य विचार अलग-अलग हैं, सुनिश्चित करें कि स्ट्रिंग स्वयं को समेकित रूप से संशोधित नहीं किया जा रहा है जबकि इसकी हैश की गणना की गई है। –