निम्नलिखित कोड जीसीसी-4.5.1 के साथ संकलित लेकिन दृश्य स्टूडियो 11.दृश्य स्टूडियो 11 संकलन समय त्रुटि :: नक्शा
#include <map>
#include <array>
typedef std::pair<const unsigned int, std::array<const unsigned int, 4>> pairus;
int main(){
std::map<const unsigned int, std::array<const unsigned int, 4> > x;
std::array<const unsigned int, 4> troll = {1, 2, 3, 4};
x.insert(pairus(1, troll));
auto z = x[1];
}
1 में नहीं अब std::array<> troll
को मैप किया है। सम्मिलन अच्छी तरह से काम करता है और कार्यक्रम संकलित करता है।
error C2512: 'std::array<_Ty,_Size>::array'
: कोई उचित डिफ़ॉल्ट उपलब्ध निर्माता
क्या कारण> इसलिए ट्रोल कि 1
को मैप किया है सरणी प्राप्त करने की कोशिश, कार्यक्रम निम्न त्रुटि के साथ संकलन नहीं करता है - लेकिन, जैसे ही मैं auto z = x[1]
कोशिश जीसीसी और बनाम 11 के बीच व्यवहार में यह अंतर और इसे कैसे ठीक किया जाए?
धन्यवाद।
क्या आप सुनिश्चित हैं कि 'जोड़ी' 'make_pair' नहीं होनी चाहिए? (ऐसा मत सोचो कि यह आपकी समस्या है) – Corbin
हाँ यह टाइपस के प्रकार के साथ बस ठीक काम करता है std :: pair <>। यह अजीब कंपाइलर व्यवहार मुझे बोनकर्स चला रहा है। – ScarletAmaranth
जोड़ीस कैसा दिखता है (मान लीजिए कि यह एक कस्टम फ़ंक्शन है या यह एमएसवीसी ++ के make_pair का उपनाम है?)। मुझे संदेह है कि समस्या जोड़ी में झूठ बोल सकती है क्योंकि आपके द्वारा पोस्ट किए गए कोड में कहीं भी डिफ़ॉल्ट कन्स्ट्रक्टर की आवश्यकता नहीं है। (यद्यपि आपने एक डिफ़ॉल्ट ctor की आवश्यकता होगी यदि आपने x [k] किया था जहां k मानचित्र में नहीं है।) – Corbin