2015-01-04 2 views
7

7.1.6.1/1 निम्नलिखित बयान (जोर मेरा) शामिल हैं:सी ++ मानक में 7.1.6.1/1 में इस कथन की प्रासंगिकता क्या है?

दो सीवी-क्वालिफायर, स्थिरांक और अस्थिर कर रहे हैं। एक सीवी-क्वालीफायर एक डीईसीएल-विनिर्देशक-सेक में प्रकट होता है, init-declarator-सूची घोषणा के खाली नहीं होगा।

ऊपर बोल्ड में कथन की प्रासंगिकता क्या है? दूसरे शब्दों में, क्या सीवी-अयोग्यमें गिरावट-निर्दिष्टकर्ता-सीईसी टाइप करना संभव है, जिसमें घोषणा के init-declarator-list खाली है?

struct A { }; // valid 
const struct B { }; // invalid, const would have no meaning 
const struct C { } c { }; // valid 

और कुछ नहीं है:

उत्तर

11

ज़रूर, सबसे वर्ग और enum परिभाषाओं यह का उपयोग करें। एक init-declarator-सूची केवल एक साधारण-घोषणा में प्रयोग किया जाता है, और उस के लिए, मानक (सी ++ 11) कहती है:

7 घोषणाएं [dcl.dcl]

3 में एक सरल-घोषणा, वैकल्पिक init-declarator-सूची केवल जब एक वर्ग (धारा 9) या गणना (7.2) की घोषणा छोड़ा जा सकता है, कि है, जब डीईसीएल-विनिर्देशक-सेक शामिल या तो एक वर्ग-विनिर्देश, विस्तारित-प्रकार-निर्दिष्ट कक्षा-कुंजी (9.1), या enum-specifier के साथ।

+0

मैं अपने उत्तर के साथ बहुत तेज़ था - हालांकि, क्या आप किसी और चीज के साथ आ सकते हैं? मैं संघर्ष कर रहा हूँ। – Columbo

+0

मुझे नहीं लगता कि कुछ और है। असल में, मुझे नहीं लगता कि यह अंतर्निहित int के बारे में कुछ भी कहता है। फ़ंक्शन पैरामीटर घोषणाओं में कोई इनिट-घोषणाकर्ता-सूची नहीं है, और यदि उन्होंने किया है, तो आपका उत्तर सुझाव देगा कि 'शून्य एफ (कॉन्स इंट);' एक अवैध घोषणा है। – hvd

+0

हां, यही कारण है कि मैंने अपना जवाब हटा दिया, मैं केवल बाद में उन तथ्यों से अवगत हो गया। :) – Columbo

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