title: Sfinae on function with either zero or one parameter
body: <p>Consider the two following declarations:</p>
  
  <pre><code>template &lt;class Function, 
            class = typename std::enable_if&lt;/*Function has zero argument*/&gt;::type&gt;
  void apply(Function&amp;&amp; function);
  template &lt;class Function, 
            class... Dummy,
            class = typename std::enable_if&lt;/*Function has one argument*/&gt;::type,
            class = typename std::enable_if&lt;sizeof...(Dummy) == 0&gt;::type&gt;
  void apply(Function&amp;&amp; function, Dummy...);
  </code></pre>
  
  <p>What should I put in the <code>std::enable_if</code> in the first and second case to constrain the overload when the function has zero or one argument (regardless the type of the argument)? </p>