मेरे विचार के लिए यहां कोड का एक छोटा सा टुकड़ा है जो मुझे बहुत पहेली बनाता है। अजीब चीज यह है कि यह सूर्य स्टूडियो और जीसीसी दोनों पर संकलित है, भले ही मुझे लगता है कि यह नहीं होना चाहिए।कक्षा तर्कों के साथ कार्य एक नामस्थान से लीक हो गए हैं?
इस पर विचार करें:
namespace name
{
class C
{
int a;
};
void f(C c);
void g(int a);
}
int main(int argc, char** argv)
{
name::C c;
name::f(c);
f(c); // <--- this compiles, strangely enough
name::g(42);
// g(42); <--- this does not, as I expected
}
एक ही नाम स्थान से वर्ग तर्क नाम स्थान से बाहर 'रिसाव' के लिए समारोह f
कारण बनता है और name::
बिना सुलभ हो।
क्या किसी के पास इसके लिए स्पष्टीकरण है? यह निश्चित रूप से मुझे है और संकलक यहां गलत नहीं है।
दिलचस्प, बीटीडब्ल्यू इंटेल कंपाइलर (आईसीपीसी) इसे भी संकलित करता है ... – Artyom
अप्रासंगिक बिट्स को हटाने के लिए अपना स्वयं का प्रश्न संपादित करें और उसी समस्या के साथ दूसरों को ढूंढना आसान बनाएं। – lytenyn