title: Returning a void?
body: <p>I do not understand why this code compiles without error:</p>
  
  <pre><code>#include &lt;iostream&gt;
  
  template &lt;class T&gt;
  struct Test
  {
      static constexpr T f() {return T();} 
  };
  
  int main()
  {
      Test&lt;void&gt; test;
      test.f(); // Why not an error?
      return 0;
  }
  </code></pre>
  
  <p>Is it ok according to the standard, or is it a compiler tolerance?</p>