title: Is it possible to use 'enable_if' and 'is_same' with variadic function templates?
body: <p>These two non-variadic function templates do compile:</p>
  
  <pre><code>template &lt;typename T, typename U&gt;
  typename std::enable_if&lt;std::is_same&lt;U, int&gt;::value, void&gt;::
  type testFunction(T a, U b) {
      std::cout &lt;&lt; "b is integer\n";
  }
  
  template &lt;typename T, typename U&gt;
  typename std::enable_if&lt;std::is_same&lt;U, float&gt;::value, void&gt;::
  type testFunction(T a, U b) {
      std::cout &lt;&lt; "b is float\n";
  }
  </code></pre>
  
  <p>however, similar variadic templates do not compile:</p>
  
  <pre><code>template &lt;typename T, typename... U&gt;
  typename std::enable_if&lt;std::is_same&lt;U, int&gt;::value, void&gt;::
  type testFunction(T a, U... bs) {
      std::cout &lt;&lt; "bs are integers\n";
  }
  
  template &lt;typename T, typename... U&gt;
  typename std::enable_if&lt;std::is_same&lt;U, float&gt;::value, void&gt;::
  type testFunction(T a, U... bs) {
      std::cout &lt;&lt; "bs are floats\n";
  }
  </code></pre>
  
  <p>Maybe I am trying to do something that cannot be done. I know that similar functionality can be achieved using initializer lists, but I would like to avoid curly brackets required for initializer list arguments.</p>