मुझे लगता है कि std::map
और std::unordered_map
की insert
विधि इन के लिए सेstd :: में नक्शा :: डालने परिवर्तन सी ++ 17
template<class P> std::pair<iterator,bool> insert(P&& value); (C++11)
std::pair<iterator,bool> insert(value_type&& value); (C++17)
को बदलने के लिए हालांकि, जा रहा है कंटेनर, value_type
std::pair<A const, int>
है। यहां दो प्रश्न:
- यह परिवर्तन क्यों? उल्टा क्या है?
- यह सम्मिलन पर कुंजी को स्थानांतरित करने के लिए कैसे काम करेगा? सी ++ 11 संस्करण कुछ भी स्वीकार करता है (
P
पर बाधाdefault_constructible<value_type, P&&>
है), फिरstd::pair<A, int>
- जो कि इस तर्क के प्रकार के अधिकांश समय है क्योंकि यहstd::make_pair
द्वारा लौटाया गया है - औरA
के चालक कन्स्ट्रक्टर को कॉल कर सकता है। लेकिन सी ++ 17 संस्करण में, यह तर्कvalue_type
पर डाला गया है, जहांA
कॉन्स है, फिर गैर-चलने योग्य है। अगर मुझे कुछ दिखाई नहीं दे रहा है, तो मुझे कॉपी करना होगा। या सी ++ 17 उस तरफ कुछ भी बदलता है?
धन्यवाद!
ऐसा लगता है कि उस सुविधा को [LWG 2354] (http://wg21.link/lwg2354) द्वारा जोड़ा गया था। –
यह "एक्स से वाई" नहीं है। यह एक अतिरिक्त अधिभार है। –