title: Variadic C++ Templates Termination After Unpack?
body: <p>I'm trying to use C++ variadic templates to unpack a list of arguments of variable type, how would I remove the "T" object in the following artificial example:</p>
  
  <pre><code>struct Test
  {
      template &lt;typename T, typename... Args&gt;
      void foo(T t, int i, Args... args) { foo(t, args...); }
  
      template &lt;typename T, typename... Args&gt;
      void foo(T t, double d, Args... args) { foo(t, args...); }
  
      template &lt;typename T&gt;
      void foo(T t) { }
  };
  
  struct DummyObject { };
  </code></pre>
  
  <p>and then executed like this:</p>
  
  <pre><code>DummyObject dummy;
  Test test;
  test.foo(dummy, 4, 5.0, 6, 7.0, 8.0, 9);
  </code></pre>
  
  <p>I'd like to remove the need to pass in the "dummy" object at all, I just can't figure out what the final "foo" function should look like in this case.</p>