title: Will C++17 allow forward declaration of nested classes?
body: <p>Not sure where to ask (feel free to close this if it is an inappropriate question) but I have not found anything on this specifically in C++17 proposals, neither <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4230.html">this</a> or <a href="https://isocpp.org/blog/2014/11/updates-to-my-trip-report">this</a> mentions it when dealing with the nested namespace addition to C++.</p>
  
  <p>So currently this is the only option:</p>
  
  <pre><code>class A 
  {
  public: 
      class B; //forward-declared INSIDE class/namespace
  };
  
  class A::B //defined outside
  {
  };
  </code></pre>
  
  <p>Will this be possible in C++17?</p>
  
  <pre><code>class A::B; //forward declared NESTED outside of parent class/namespace
  
  class C
  {
      A::B *b;
  };
  </code></pre>
  
  <p>and then either this (1) (as seems to be the proposal of nested namepsace definitions)</p>
  
  <pre><code>class A::B //definition of A::B without defining A
  {
  
  };
  </code></pre>
  
  <p>or this (2)</p>
  
  <pre><code>class A
  {
  public:
      class A::B
      {
  
      };
  };
  </code></pre>
  
  <p>or this [3]</p>
  
  <pre><code>class A
  {
  public:
      class B;
  };
  
  class A::B
  {
  };
  </code></pre>
  
  <p>I suspect the definition of <code>A::B</code> without defining <code>A</code> first might not work though (although the proposal seems to allow it).</p>