दिलचस्प पोस्ट
Libgdx (एंड्रॉइड) में समय कैसे ट्रैक करें स्थापना में एक आर पैकेज है रेल पर रूबी में, दिनांक समय, टाइमस्टैम्प, समय और दिनांक के बीच अंतर क्या है? curl_init () फ़ंक्शन काम नहीं कर रहा है ASP.NET MVC: क्या प्रत्येक अनुरोध के लिए नियंत्रक बनाया गया है? गिटब के साथ धक्का लगाते समय त्रुटि: घातक: उपयोगकर्ता नाम को नहीं पढ़ा जा सका पायथन पंडों में मौजूदा डेटाफ्रेम में नया कॉलम जोड़ना पायथन – ई-मेल हैडर डीकोडिंग यूटीएफ -8 वास्तव में कैसे काम करता है fread? क्या एक jqgrid treegrid सेल के अंदर html होना संभव है समानांतरवाद का समर्थन नहीं करते हुए boost.python? हाइबरनेट में डिफ़ॉल्ट मान कैसे सेट करें अपाचे POI के साथ एक बड़ी एक्सएलएसएक्स फ़ाइल कैसे लोड करें? एंड्रॉइड टुकड़े स्क्रीन रोटेशन या कॉन्फ़िगरेशन परिवर्तन के दौरान एक AsyncTask को बनाए रखना यूआरएल के लिए फ्लास्क में गतिशील यूआरएल बनाएं ()

सी ++ 11: सही std :: array initialization?

यदि मैं एक std :: array को निम्नानुसार प्रारंभ किया है, तो कंपाइलर मुझे लापता ब्रेसिज़ के बारे में चेतावनी देता है I

std::array<int, 4> a = {1, 2, 3, 4}; 

यह समस्या को हल करता है:

 std::array<int, 4> a = {{1, 2, 3, 4}}; 

यह चेतावनी संदेश है:

 missing braces around initializer for 'std::array<int, 4u>::value_type [4] {aka int [4]}' [-Wmissing-braces] 

क्या यह जीसीसी के मेरे संस्करण में सिर्फ एक बग है, या जानबूझ कर किया है? यदि हां, तो क्यों?

वेब के समाधान से एकत्रित समाधान "सी ++ 11: सही std :: array initialization?"

यह std::array के नंगे कार्यान्वयन है:

 template<typename T, std::size_t N> struct array { T __array_impl[N]; }; 

यह एक समग्र ढांचा है जिसका केवल डेटा सदस्य एक पारंपरिक सरणी है, जैसे आंतरिक {} इनर सरणी को प्रारंभ करने के लिए उपयोग किया जाता है।

कुल प्रारंभिक रूप से (लेकिन आमतौर पर अनुशंसित नहीं) कुछ मामलों में ब्रेस एलिज़न की अनुमति है और इसलिए इस मामले में केवल एक ब्रेस का उपयोग किया जा सकता है। यहां देखें: सी ++ सरणियों का वेक्टर

Cppreference के अनुसार डबल ब्रेसिज़ केवल तभी आवश्यक है अगर = छोड़े गए।

 // construction uses aggregate initialization std::array<int, 3> a1{ {1,2,3} }; // double-braces required std::array<int, 3> a2 = {1, 2, 3}; // except after = std::array<std::string, 2> a3 = { {std::string("a"), "b"} };