title: Why can't I forward-declare a class in a namespace using double colons?
body: <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>