C++11 और उसके बाद में लिस्ट इनिशियलाइज़ेशन (कर्ली ब्रेसेज़) के लाभ
सभी को नमस्ते! मैंने C++11 सीखना शुरू किया है और एक नई सुविधा पर ध्यान गया — कर्ली ब्रेसेज़ के साथ इनिशियलाइज़ेशन (list initialization)। उदाहरण के लिए:\n\n```cpp\nstd::vector v = {1, 2, 3};\nint x{0};\n```\n\nयह काम करता है, लेकिन मुझे समझ नहीं आता कि जब पुरानी अच्छी राउंड ब्रेसेज़ या असाइनमेंट ऑपरेटर के साथ इनिशियलाइज़ेशन पहले से मौजूद है तो इसकी क्या ज़रूरत है। मुझे लगता है कि यह सिर्फ syntactic sugar है।\n\nलेकिन मैंने सुना है कि कर्ली ब्रेसेज़ कुछ समस्याओं को हल करते हैं। उदाहरण के लिए, मैंने पढ़ा कि वे narrowing conversions को रोकते हैं। लेकिन यह क्या है? और इसके और क्या लाभ हैं?\n\nमेरे पास एक विशिष्ट उदाहरण है जो मुझे भ्रमित करता है:\n\n```cpp\nint a = 3.14; // a == 3, बस दशमलव भाग खो जाता है\nint b(3.14); // वही बात\nint c{3.14}; // कम्पाइलेशन एरर! क्यों?\n```\n\nमैं समझता हूँ