title: Two curiosities with the C++ grammar
body: <p>In <strong>§5.2[expr.post]/1</strong> we have the definition of <em>expression-list</em></p>
  
  <blockquote>
    <p><em>expression-list</em>:<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>initializer-list</em></p>
  </blockquote>
  
  <p>Why do we need both definitions?</p>
  
  <p>In <strong>§8.5[dcl.init]/1</strong> we have:</p>
  
  <blockquote>
    <p><em>braced-init-list</em>:<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ initializer-list, <sub>opt</sub> }<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ }  </p>
  </blockquote>
  
  <p>Why do we need the optional <code>,</code> above?</p>
  
  <p>Note that this snippet compiles:</p>
  
  <pre><code>struct A{
      int i;
      float f;
      A(int i, float f) : i(i), f(f) {}
  };
  
  int main()
  {
      A a = { 1, 2., };
  }
  </code></pre>