Question

It's possible to do using namespace foo::bar; (i.e., using the inner namespace without using the outer namespace first / at all), why does the standard forbid to do the following?

namespace foo::bar {
  // open nested namespace bar in foo and extend it...
}

I'm not looking for a workaround, just a possible rational on why this isn't allowed.

Was it helpful?

Solution

I'm not sure "forbidden" is the right word - maybe it was just an oversight. It's a fairly small nice-to-have which isn't really a big deal.

You could also take the point of view that the namespace foo isn't created yet when you write foo::bar, so allowing that syntax makes it look like foo was already created when it was not.

You could also go further and request the ability to write class Foo::MyClass {... to define MyClass in namespace Foo, and the same for functions, variables, etc. But is this feature really necessary and solving any particular pressing problem?

OTHER TIPS

Why make compilers implement it when you could just do

namespace foo { namespace bar {

}}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top