I am trying to avoid including an auto-generated header (outside of my control), from inside my own headers. I therefore need to forward-declare a type `Type` that lives inside a namespace `nm`, which itself lives in the global namespace. Here is an example of `MyHeader.h`:

```
// My project defines two levels of nested namespaces 
namespace foo { namespace bar {
    namespace nm { struct Type; }
    ...
} }

```

Unfortunately this defines the new namespace `foo::bar::nm` and forward-declares the type `foo::bar::nm::Type`, which is not what I want. Ideally I would be able to forward-declare a type in the qualified namespace `::nm` like this:

```
namespace foo { namespace bar {
    namespace ::nm { struct Type; }
    ...
} }

```

My compiler complains I cannot use a qualified namespace here (using Intel ICC15 with C++11 settings). This forces me to put all such forward declarations at the beginning:

```
namespace nm { struct Type; }
namespace foo { namespace bar {
    ...
} }

```

In my case, this is inconvenient because I need to forward-declare many types and would prefer to do so alongside definitions of my own in various scattered places in my header. A workaround could be to constantly be "closing" and "re-opening" my nested namespace, which is not ideal.

Why can't I forward-declare a type in a qualified namespace ?