namespace n1 { long c; } namespace n2 { using namespace n1; long d = c; } namespace n2 { using namespace n1; long e = c; } namespace n2 { using namespace n1; long f = c; } namespace n2 { using namespace n1; long g = c; } namespace n2 { using namespace n1; long h = c; } // In the third namespace extension // this stops compiling due to errors. It says: // error C2065: 'c': undeclared identifier // although there is the "using namespace n1" // Oddness 1: The error is "corrected" by // explicitly substituting "n1::c" instead of just "c" // Oddness 2: If the error was not "corrected", then // the following identical namespace extensions // result in errors that say: // error C2872: 'c': ambiguous symbol // Oddness 3: If the error was "corrected", then // the program compiles without errors and // the "n1::c" is only required in the _third_ // namespace extension. int main() { return 0; }