"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जीसीसी इनिशियलाइज़ेशन सूचियों के साथ std::array को इनिशियलाइज़ करने में विफल क्यों होता है?

जीसीसी इनिशियलाइज़ेशन सूचियों के साथ std::array को इनिशियलाइज़ करने में विफल क्यों होता है?

2024-11-19 को प्रकाशित
ब्राउज़ करें:114

Why Does GCC Fail to Initialize std::array with Initialization Lists?

प्रारंभिक सूचियाँ और std::array: एक GCC बग

C मानक लाइब्रेरी में std::array वर्ग एक निश्चित प्रदान करता है- आकार सरणी कंटेनर. आमतौर पर यह माना जाता है कि यह वर्ग आरंभीकरण सूचियों का समर्थन करता है। array<:string> strings = { "a", "b" }; std::array<:string> strings({ "a", "b" });

std::vector के साथ काम करने वाली प्रारंभिक सूचियों के बावजूद, std::array के साथ यह व्यवहार बढ़ गया है सी मानक या संभावित जीसीसी मुद्दे के बारे में प्रश्न। इसकी संरचना इस प्रकार है:

std::array<:string> strings = { "a", "b" };
std::array<:string> strings({ "a", "b" });

std::vector के विपरीत, जिसमें इनिशियलाइज़र सूचियों को स्वीकार करने वाला एक कंस्ट्रक्टर होता है, std::array में ऐसे कंस्ट्रक्टर का अभाव होता है।

एग्रीगेट इनिशियलाइज़ेशन

हालांकि std::array में इनिशियलाइज़ेशन सूचियों के लिए कोई स्पष्ट कंस्ट्रक्टर नहीं है, इसे C 11 में एक एग्रीगेट प्रकार माना जाता है। इस प्रकार, इसे एग्रीगेट इनिशियलाइज़ किया जा सकता है। हालाँकि, संरचना के भीतर सरणी को आरंभ करने के लिए, घुंघराले ब्रेसिज़ का एक अतिरिक्त सेट आवश्यक है:

template
struct std::array {
  T a[size];
};

संभावित जीसीसी बग

सी मानक ऐसे आरंभीकरण में अतिरिक्त घुंघराले ब्रेसिज़ को हटाने की अनुमति देता है। इसलिए, यह संभव है कि जीसीसी की उनके बिना इस सिंटैक्स को संभालने में असमर्थता एक बग है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3