C ++ 0x निम्नलिखित कोड और इसी तरह के कोड को बीमार बनाने जा रहा है, क्योंकि इसमें एक से एक के तथाकथित संकीर्ण रूपांतरण की आवश्यकता होती double
है int
।
int a[] = { 1.0 };
मैं सोच रहा हूँ कि क्या इस तरह के इनिशियलाइज़ेशन का उपयोग वास्तविक विश्व कोड में ज्यादा किया जाता है। इस बदलाव से कितने कोड टूटेंगे? क्या आपके कोड में इसे ठीक करने का बहुत प्रयास किया जाता है, यदि आपका कोड बिल्कुल प्रभावित होता है?
संदर्भ के लिए, n3225 का 8.5.4 / 6 देखें
एक संकीर्ण रूपांतरण एक अंतर्निहित रूपांतरण है
- एक फ्लोटिंग-पॉइंट प्रकार से एक पूर्णांक प्रकार, या
- लंबे समय तक डबल से डबल या फ्लोट से, या डबल से फ्लोट तक, जहां स्रोत एक स्थिर अभिव्यक्ति है और रूपांतरण के बाद वास्तविक मूल्य उन मूल्यों की सीमा के भीतर है, जिनका प्रतिनिधित्व किया जा सकता है (भले ही यह बिल्कुल प्रतिनिधित्व नहीं किया जा सकता है), या
- पूर्णांक प्रकार या अनकैप्ड एन्यूमरेशन प्रकार से ating ओटिंग-पॉइंट प्रकार तक, सिवाय इसके कि जहां स्रोत एक स्थिर अभिव्यक्ति है और रूपांतरण के बाद वास्तविक मान लक्ष्य प्रकार में फिट होगा और मूल प्रकार में वापस परिवर्तित होने पर मूल मान उत्पन्न करेगा, या
- पूर्णांक प्रकार या अनकैप्ड एन्यूमरेशन प्रकार से पूर्णांक प्रकार जो मूल प्रकार के सभी मानों का प्रतिनिधित्व नहीं कर सकता है, सिवाय जहां स्रोत एक स्थिर अभिव्यक्ति है और रूपांतरण के बाद वास्तविक मान लक्ष्य प्रकार में फिट होगा और मूल मूल्य का उत्पादन करेगा जब मूल प्रकार में परिवर्तित।