2010-11-08 17 views
10

कुछ विरासत कोड में निम्नलिखित देखा? यह वीसी ++ 2008 में संकलित करता है और डिफ़ॉल्ट कन्स्ट्रक्टर की तरह दिखता है, बग जीसीसी इसे संकलित करने में विफल रहता है।अजीब डिफ़ॉल्ट निर्माता वाक्य रचना

उत्तर

7

हालांकि वाक्य रचना & व्याकरण (यह एक declarator अनुक्रम है कि का एक उदाहरण है: ptr-ऑपरेटर declarator, & एक ptr-ऑपरेटर जा रहा है) में इस स्थिति में अनुमति दी है, शब्दार्थ यह कोई है मतलब और यहां अनुमति नहीं है। तथ्य यह है कि यह पूरी तरह से व्याकरण बिंदु से वैध है, यह संकेत दे सकता है कि क्यों विजुअल स्टूडियो इसे स्वीकार कर सकता है।

संभावनाओं की जांच करना, यह घोषणा किसी फ़ंक्शन प्रकार की तरह फ़ंक्शन परिभाषा की तरह दिखती है। 7 [dcl.dcl]/6 कहता है: "केवल रचनाकारों, विनाशकों और प्रकार के रूपांतरणों के लिए फ़ंक्शन घोषणाओं में decl-specifier-seq हो सकता है।" और वहां कोई ~ या operator एकमात्र संभावना एक निर्माता घोषणा नहीं है।

12.1 [class.ctor]/1 रचनाकारों के लिए उपयोग किए जाने वाले विशेष घोषणाकर्ता वाक्यविन्यास का वर्णन करता है और यह केवल फ़ंक्शन-विनिर्देशक का वैकल्पिक अनुक्रम होना चाहिए जिसके बाद निर्माता का वर्ग नाम हो। कन्स्ट्रक्टर के क्लास नाम से पहले & या अन्य पीआरटी-ऑपरेटर की अनुमति है।

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