यदि मैं मानक सही ढंग से पढ़ता हूं, तो g ++ सही है और वीएस गलत है।
आईएसओ आईईसी 14,882-2003 (ई), §9.2 वर्ग (pag.153): एक वर्ग-नाम गुंजाइश है, जिसमें इसे तुरंत घोषित किया जाता है के बाद वर्ग नाम में देखा जाता है में डाला जाता है। कक्षा का नाम कक्षा के दायरे में भी डाला जाता है; इसे इंजेक्शन-क्लास-नाम के रूप में जाना जाता है। पहुंच जांच के प्रयोजनों के लिए, इंजेक्शन-क्लास-नाम का इलाज इस तरह किया जाता है कि यह एक सार्वजनिक सदस्य नाम था।
आईएसओ आईईसी 14,882-2003 (ई), §3.4-3 नाम लुक (PAG:
नीचे टिप्पणी जारी रखते हुए, यह भी विशेष रूप से उपयोगी वास्तविक नाम लुक नियमों के विषय में निम्नलिखित बनाए रखने के लिए है। 2 9): नाम छिपाने और लुकअप के प्रयोजनों के लिए कक्षा (इंजेक्शन 9) का इंजेक्शन-क्लास-नाम भी उस वर्ग का सदस्य माना जाता है।
यदि यह नहीं था, तो 9.2 पर पाठ के अंतिम भाग को देखते हुए यह अजीब होगा। लेकिन चूंकि लीब ने टिप्पणी की कि यह हमें आश्वस्त करता है कि वास्तव में जी ++ मानक की सही व्याख्या कर रहा है। कोई सवाल नहीं छोड़ा गया है।
स्रोत
2009-08-12 03:01:24
बस सोच रहा है, लेकिन आप foo उपयोग कर रहे हैं और आपके वास्तविक कोड में विधि? या आप बस कुछ कोड को अलियासिंग कर रहे हैं जिसके साथ आप काम कर रहे थे? – jkeys
मैंने उस कोड को एक फ़ाइल प्रोजेक्ट के रूप में कॉपी किया है और एक खाली मुख्य फ़ंक्शन जोड़ा है। यह वास्तव में जीसीसी 4.3.3 के तहत संकलित करता है। – Matt
मैं पुष्टि कर सकता हूं कि यह वास्तव में किसी भी नामस्थान या किसी भी चीज़ के बिना चेतावनियों के बिना g ++ पर संकलित करता है (मैंने इसे 3.4.5 mingw पर आजमाया है)। दूसरी ओर एमएसवीसी 2008 ने इसे खारिज कर दिया। बहुत अजीब। –