title: Specialize a template for void parameter
body: <p>I have a the following template and specialization (this code is not correct, but hopefully demonstrates my intent well enough):</p>
  
  <pre><code>template &lt;typename T&gt; widget &amp;&amp;make_widget(T &amp;&amp;val) { // (1)
      return std::move(widget(std::forward&lt;T&gt;(val)));
  }
  
  template &lt;&gt; widget &amp;&amp;make_widget(void) { // (2)
      return std::move(widget());
  }
  </code></pre>
  
  <p>The intent is to have a factory function that can be called like this:</p>
  
  <pre><code>make_widget(arbitrary_function());
  </code></pre>
  
  <p>And have it choose the default constructor if <code>arbitrary_function</code> returns <code>void</code>. </p>
  
  <p>However, with clang 3.7 I get the following error:</p>
  
  <pre>error: no function template matches function template specialization 'make_widget'</pre>
  
  <p>pointing to the line of (2). How can I implement this correctly?</p>