यह वर्तमान MSVC संकलक के साथ बिल्कुल ठीक संकलित:अप्रारंभीकृत स्थिरांक
struct Foo
{
} const foo;
हालांकि, यह वर्तमान जी के साथ संकलित करने के लिए विफल रहता है ++ संकलक:
error: uninitialized const 'foo' [-fpermissive]
note: 'const struct Foo' has no user-provided default constructor
अगर मैं एक डिफ़ॉल्ट निर्माता अपने आप को, इसे प्रदान काम करता है:
struct Foo
{
Foo() {}
} const foo;
क्या एमएसवीसी का यह एक और मामला बहुत अनुमोदित है, या जी ++ बहुत सख्त है?
ग्रेट प्रश्न श्री ओवरफ्लो। –
डुप्लिकेट्स: http://stackoverflow.com/questions/5335836/why-a-const-object-of-an-empty-class-cant-be-created http://stackoverflow.com/questions/7411515/why- क्या-सी-आवश्यकता-ए-उपयोगकर्ता-प्रदत्त-डिफ़ॉल्ट-कन्स्ट्रक्टर-टू-डिफॉल्ट-निर्माण-दूसरों के बीच में है। – GManNickG
मैं इसे किसी भी बोली विकल्प के साथ जीसीसी 4.6.1 पर पुन: उत्पन्न नहीं कर सकता। यह केवल तभी काम करता है जब मैं एक सदस्य चर स्थापित करता हूं (जैसे 'int a; '), और त्रुटि अधिक सटीक है:' कॉन्स्ट स्ट्रक्चर फू 'में कोई उपयोगकर्ता द्वारा प्रदत्त डिफॉल्ट कन्स्ट्रक्टर नहीं है और अंतर्निहित परिभाषित कन्स्ट्रक्टर' int 'प्रारंभ नहीं करता है Foo :: a'' –