साथ यह एक कथात्मक क्षेत्र में एक ही नाम के साथ एक नाम स्थान और एक वर्ग डाल करने के लिए अनुमति नहीं है, यानि किअस्पष्ट नाम देखने का उपयोग कर-निर्देश
namespace A {}
class A{};
is ill-formed (देखना §3.3.1/4)। हालांकि, कोई भी उपयोग-निर्देश के माध्यम से किसी एक का नाम पेश कर सकता है:
namespace N { namespace A {int i;} }
struct A {static int i;};
using namespace N;
int i = A::i; // The global struct, or namespace N::A?
क्या यह कोड खराब है? कुलपति ++ thinks so, साथ ही Clang:
main.cpp:7:9: error: reference to 'A' is ambiguous int i = A::i; ^ main.cpp:3:8: note: candidate found by name lookup is 'A' struct A {static int i;}; ^ main.cpp:1:25: note: candidate found by name lookup is 'N::A' namespace N { namespace A {int i;} } ^
हालांकि, GCC accepts it।
कौन सही है?
जीसीसी चुनता है 'एन :: ए :: i'। सोचता हूँ क्यों। – Barry
@ बैरी मैं बस उलझन में हूं, क्योंकि मुझे उम्मीद है कि यह घोषणा अधिक पसंद करेगी जो अधिक सतही है, यानी लुकअप के बिंदु पर "करीब"। – Columbo