title: Public alias for non-public type
body: <p>I wonder if it is valid C++ :</p>
  
  <pre><code>class Test {
      struct PrivateInner {
          PrivateInner(std::string const &amp;str) {
              std::cout &lt;&lt; str &lt;&lt; "\n";
          }
      };
  
  public:
      using PublicInner = PrivateInner;
  };
  
  //Test::PrivateInner priv("Hello world");        // Ok, private so we can't use that
  Test::PublicInner publ("Hello World");           // ?, by using public alias we can access private type, is it ok ?
  </code></pre>