मैं एक मानचित्र में एक वस्तु बनाने की कोशिश कर रहा हूं जिसमें परमाणु है, इसलिए इसे कॉपी नहीं किया जा सकता है और न ही AFAICT को स्थानांतरित किया जा सकता है।मानचित्र में एक अप्रचलित वस्तु का निर्माण
सी ++ reference का मेरा पठन यह है कि नक्शा emplace
ऐसा करने में सक्षम होना चाहिए। लेकिन निम्नलिखित कोड हटाए गए या अस्तित्वहीन रचनाकारों के कारण संकलित नहीं होता है। make_pair
का उपयोग करने में मदद नहीं करता है।
#include <atomic>
#include <unordered_map>
class Z {
std::atomic<int> i;
};
std::unordered_map<int, Z> map;
void test(void) {
map.emplace(0, Z()); // error
map[0] = Z(); // error
}
क्या यह संभव है, और यदि नहीं, तो क्यों नहीं?
संपादित करें: संकलक लिनक्स
पर
आप क्या संकलक प्रयोग करते हैं? – Drop
'emplace' कन्स्ट्रक्टर तर्क लेता है, लेकिन आप एक अस्थायी वस्तु को पार कर रहे हैं। –
@NeilKirk फिर कोई और नो-Arg कन्स्ट्रक्टर का आह्वान कैसे करेगा? –