Created on 2001-09-18.00:00:00 last changed 262 months ago
Notes from April 2003 meeting:
We're closing this because it's on the Evolution working group list.
I received an inquiry/complaint that you cannot re-open a namespace using a qualified name. For example, the following program is ok, but if you uncomment the commented lines you get an error:
namespace A { namespace N { int a; } int b; namespace M { int c; } } //namespace A::N { // int d; //} namespace A { namespace M { int e; } } int main() { A::N::a = 1; A::b = 2; A::M::c = 3; // A::N::d = 4; A::M::e = 5; }
Andrew Koenig: There's a name lookup issue lurking here. For example:
int x; namespace A { int x; namespace N { int y; }; } namespace A::N { int* y = &x; // which x? }
Jonathan Caves: I would assume that any rule would state that:
namespace A::B {would be equivalent to:
namespace A { namespace B {so in your example 'x' would resolve to A::x
BTW: we have received lots of bug reports about this "oversight".
Lawrence Crowl: Even worse is
int x; namespace A { int x; } namespace B { int x; namespace ::A { int* y = &x; } }I really don't think that the benefits of qualified names here is worth the cost.
History | |||
---|---|---|---|
Date | User | Action | Args |
2003-04-25 00:00:00 | admin | set | messages: + msg879 |
2003-04-25 00:00:00 | admin | set | status: open -> nad |
2001-09-18 00:00:00 | admin | create |