This seems like such a basic thing:
int foo(int local, int context);
struct A
{
int context;
int foo (int local)
{
//return foo (local, context); // would be nice, but not legal
return ::foo (local, context); // workaround
}
};
And then wrap it in a namespace:
namespace n1
{
int foo(int local, int context);
struct A
{
int context;
int foo (int local)
{
return ::foo (local, context); // no longer correct
}
};
}
it seems to me there are two principles violated here:
- I shouldn't have to disambiguate in the first place. The lexical scopes should be merged. Too ambiguous?
2. If I have to disambiguate, code should not have to know what namespace it is in.
I should be able to wrap existing code in namespaces w/o breaking it.