title: Nested Iterator class does not name a type
body: <p><strong><em>DECLARATION: This question is ALL about the error IN THE PRESENCE of the following demonstrated using statement. I understand there're other similar questions on SO but none of them answered my specific question. And I know how to make it work WITHOUT the using statement.</em></strong></p>
  
  <p>In my header file:</p>
  
  <pre><code>class MyClass
  {
      public:
      class MyIterator
      {
          public:
              MyIterator&amp; operator++(int);
  
          private:
              static const MyIterator END; 
      };
  
      ...
  };
  </code></pre>
  
  <p>In my implementation file (.cc file):</p>
  
  <pre><code>using ::MyClass; //**QUESTION: I've already used the class, why did the nested MyIterator class not get recognized?** EDIT: excuse my English, I can't write - by I've already used, I mean, I've already told the compiler "using that class"
  
  // the following line is the definition of the static const object
  const MyIterator MyIterator::END = MyIterator(); //error: ‘MyIterator’ does not name a type
  
  MyIterator&amp; MyIterator::operator++(int) //error: ‘MyIterator’ does not name a type
  {
      ...
  }
  </code></pre>
  
  <p>As I put in the comment - QUESTION: I've already used the class, why did the nested 'MyIterator'class not get recognized? --- correction: I've already told the compiler "using the class", why did ...</p>
  
  <p>Thanks a lot.</p>
  
  <p>EDIT:
  Thanks a lot for pointing out the const discrepency; it was a mistake during copy paste; it has been corrected.</p>
  
  <p>Note that the intention of introducing the using statement is to get rid of the fully qualified name when implementing the member function(operator overload in this case). Therefore please refrain from suggesting that.</p>