title: g++ warning when using optional 'struct' keyword
body: <p>If I write this program:</p>
  
  <pre><code>#include &lt;iostream&gt;
  
  namespace foo {
      struct bar {
          int x;
      };
  }
  
  int main (void) {
      struct foo::bar *a = new struct foo::bar;
      delete a;
      return 0;
  }
  </code></pre>
  
  <p>and compile it with:</p>
  
  <pre><code>g++ main.cxx -Wall -Wextra
  </code></pre>
  
  <p>It gives me this warning:</p>
  
  <pre><code>main.cxx: In function ‘int main()’:
  main.cxx:10:39: warning: declaration ‘struct foo::bar’ does not declare anything [enabled by default]
  </code></pre>
  
  <p>However, if I take out the <code>struct</code> keyword after the <code>new</code> keyword:</p>
  
  <pre><code>#include &lt;iostream&gt;
  
  namespace foo {
      struct bar {
          int x;
      };
  }
  
  int main (void) {
      struct foo::bar *a = new foo::bar;
      delete a;
      return 0;
  }
  </code></pre>
  
  <p>and compile it the same way, g++ outputs no warnings.  Why does g++ output that warning if I use the <code>struct</code> keyword?</p>