मेरी राय में नए नियम वर्णन और समझने के लिए अधिक जटिल हैं। उदाहरण के लिए विचार है कि:
int x = 12;
x = x++ + 1; // undefined behaviour
x = ++x + 1; // valid
मैं बस एक ही अभिव्यक्ति है कि एक नियम को समझने के लिए सरल में एक ही चर के लिए कई दुष्प्रभाव से बचने के लिए सुझाव है। AFAIK C++ 0X ने कुछ मामलों को बदल दिया जो अतीत में अपरिभाषित व्यवहार थे और अब कानूनी उपयोग हैं (उदाहरण के लिए ऊपर दो अभिव्यक्तियों में से दूसरा) लेकिन याद रखें कि कानूनी और क्या है इसके बीच हमेशा अंतर होगा नैतिक है ;-) ... कोई भी ऐसी चीजों का उपयोग करने के लिए मजबूर नहीं कर रहा है।
वास्तव में उपरोक्त मामले में लगता है कि दूसरी अभिव्यक्ति की वैधता भाषा में एक और मुद्दा (# 222) फिक्सिंग का एक पक्ष प्रभाव के रूप में अनजाने हुआ। निर्णय अभिव्यक्ति को वैध बनाना था क्योंकि ऐसा माना जाता था कि यूबी से कुछ परिभाषित करने के लिए कुछ भी बदलना कोई नुकसान नहीं पहुंचा रहा था। मुझे लगता है कि हालांकि इसने कार्यक्रमों को कोई नुकसान नहीं पहुंचाया है (जहां निश्चित रूप से यूबी सबसे बुरी संभावित समस्या है), इसने वास्तव में भाषा को कुछ नुकसान पहुंचाया ... एक ऐसा नियम बदलना जो पहले से ही जटिल और समझने के लिए जटिल था एक और भी अस्पष्ट एक।
आईएमओ सी ++ सी से अपने प्राकृतिक विकास को एक ऐसी भाषा में जारी रख रहा है जहां अच्छे दिखने वाले अच्छे और तार्किक वक्तव्य का एक गुच्छा अद्भुत चीजें कर सकता है ... और जिसमें समान रूप से अच्छा दिखने वाला, समान रूप से अच्छा और समान तार्किक बयान आपके कंप्यूटर को इसके बजाय विस्फोट कर सकता है।
ठीक है, सब से पहले ... C++ 0x में अपरिभाषित व्यवहार नाक राक्षसों का कारण नहीं है ... यह बट बंदरों सम्मन। –
मुझे शायद ही लगता है कि यह सीखने लायक है। वे अभिव्यक्ति अभी भी मानव पठनीय नहीं हैं। – UncleBens
@UncleBens: "उदाहरण के लिए" का कौन सा हिस्सा आपके लिए एक बड़े पर्याप्त फ़ॉन्ट में नहीं था? ;-) –