निम्नलिखित के तत्वों के लिए बुरा है:कॉन्स्ट-शुद्धता एसटीडी कंटेनर
vector<const int> vec;
समस्या यह है कि टेम्पलेट प्रकार आबंटित होने की जरूरत है है। निम्नलिखित कोड को संकलित करता है [संपादित करें: दृश्य स्टूडियो 2010 में], ऊपर के साथ एक समस्या का प्रदर्शन:
vector<const int> vec;
vec.push_back(6);
vec[0] += 4;
अधिक जटिल प्रकार के साथ, यह एक गंभीर समस्या हो सकती है।
मेरा पहला सवाल यह है कि इस व्यवहार का कोई कारण है या नहीं। ऐसा लगता है जैसे कॉन्स कंटेनर बनाना संभव हो सकता है जो उपरोक्त और गैर-कॉन्स कंटेनरों को अस्वीकार करते हैं जो इसे अनुमति देते हैं।
दूसरा, इस तरह से काम करने वाले कंटेनर बनाने का कोई तरीका है?
तीसरा, वास्तव में यहां क्या हो रहा है (उपयोगकर्ता प्रकार के साथ)? मुझे एहसास है कि यह अनिर्धारित व्यवहार है, लेकिन एसटीएल भी इसे संकलित कैसे कर रहा है?
आप मानक लाइबेरे का उपयोग ऐसे तरीके से कर रहे हैं जो अपरिभाषित व्यवहार है। इसका मतलब है कि क्या होना चाहिए * पर * कोई आवश्यकता नहीं है। कुछ ऑपरेशन काम करने लगते हैं, अन्य शायद नहीं। और विभिन्न कार्यान्वयन के बीच उम्मीद की कोई स्थिरता नहीं है। –
यह g ++ 4.6.3 पर संकलित नहीं करता है। –
आपका कोड C++ मानक के साथ संकलित नहीं करता है। –