title: Is sizeof(void()) a legal expression?
body: <p>From <a href="http://eel.is/c++draft/expr.sizeof#1">[5.3.3/1]</a>, I found that:</p>
  
  <blockquote>
    <p>The sizeof operator shall not be applied to an expression that has function or incomplete type</p>
  </blockquote>
  
  <p>From <a href="http://eel.is/c++draft/basic.types#5">[3.9/5]</a> I found that:</p>
  
  <blockquote>
    <p>Incompletely-defined object types and cv void are incomplete types</p>
  </blockquote>
  
  <p>Anyway, for <code>sizeof</code> does not evaluate it's operands, I would have said that <code>sizeof(void())</code> was a legal expression (actually GCC compiles it and the result is 1).<br>
  On the other side, from <a href="http://eel.is/c++draft/expr.sizeof">here</a>, <code>void</code> is not mentioned while discussing <code>sizeof</code>, neither when the types having size 1 are mentioned, nor in the list of the ones having an <em>implementation defined</em> size.</p>
  
  <p>The question is thus: is <code>sizeof(void())</code> a legal expression?<br>
  Is it guaranteed to have size equal to 1?<br>
  Or is it a legal expression resulting in an UB and that's all?</p>