Why can't I forward-declare a class in a namespace like this? <pre><code>class Namespace::Class; </code></pre> <p>Why do I have to do this?:</p> <pre><code>namespace Namespace { class Class; } </code></pre> <p>Using VC++ 8.0, the compiler issues:</p> <blockquote> <p>error C2653: 'Namespace' : is not a class or namespace name</p> </blockquote> <p>I assume that the problem here is that the compiler cannot tell whether <code>Namespace</code> is a class or a namespace? But why does this matter since it's just a forward declaration?</p> <p>Is there another way to forward-declare a class defined in some namespace? The syntax above feels like I'm "reopening" the namespace and extending its definition. What if <code>Class</code> were not actually defined in <code>Namespace</code>? Would this result in an error at some point?</p>