2010-06-07 18 views
9

मानक कहते हैं, 5,17/9एक सरणी में ब्रेसिड-इनिट-सूची का असाइनमेंट सही है?

के तहत एक braced-init-सूची
के दाएँ हाथ की ओर पर प्रदर्शित हो सकता - एक अदिश के लिए एक काम [...]
- एक काम में परिभाषित किया गया उपयोगकर्ता-निर्धारित असाइनमेंट ऑपरेटर [..]

जीसीसी 4.5.1-pre9999 में, मैं इस संकलन सकते हैं द्वारा (-std का उपयोग कर = C++ 0x, नहीं -std = GNU ++ 0x)

#include <iostream> 

int main() 
{ 
     int test[] = {1,2,3}; 
     std::cout << test[0] << test[1] << test[2]; 
     test = {4,5,6}; 
     std::cout << test[0] << test[1] << test[2] << std::endl; 
} 

और यह 123456 प्रिंट करता है। क्या जीसीसी सही है?

+5

बंद करने के लिए मतदान क्योंकि यह बहुत स्थानीय है, यह अब-अप्रचलित संकलक संस्करण में एक बग है। – Cubbi

उत्तर

4

यह मेरे लिए एक बग जैसा दिखता है। प्रारंभिकरण (int test = {1,2,3};) ठीक है, लेकिन जहां तक ​​मैं देख सकता हूं, मानक में कुछ भी असाइनमेंट की अनुमति नहीं देता है।

+0

और यदि इसकी अनुमति थी, तो तार्किक रूप से सरणी असाइनमेंट होना चाहिए। –

+0

@Neil: वास्तव में सच है। –

+4

आप सही थे, जाहिर है कि यह एक जीसीसी बग था और इसे जीसीसी 4.6 में तय किया गया था: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44045#c12 – Cubbi

संबंधित मुद्दे