title: Why is int(a) an expression and int(unsigned(a)) a type-id in the example below?
body: <p>In <a href="http://eel.is/c++draft/dcl.ambig.res#2" rel="nofollow noreferrer">[dcl.ambig.res]/2</a> we find the following:</p>
  
  <pre><code>void foo(signed char a) {
      sizeof(int(a)); // expression
      sizeof(int(unsigned(a))); // type-id (ill-formed)
  }
  </code></pre>
  
  <p>Why is <code>int(a)</code> an expression and <code>int(unsigned(a))</code> a type-id?</p>
  
  <p>At first sight I would say that both are expressions.</p>