title: Infer parameter pack types from pack of template types
body: <p>Is it possible to pass a parameter pack of template types, and infer a parameter pack from the template types stored type.</p>
  
  <p>E.g. I have a function foo which returns a tuple which holds parameters <code>A...</code>. If the function accepts a parameter pack of vectors <code>B...</code> which store the types to be found in <code>A...</code>, can these be inferred somehow from <code>A...</code> alone? Or must they always be explicitly specified?</p>
  
  <pre><code>template &lt;typename A..., typename B...&gt;
  std::tuple&lt;B...&gt; foo(A...)
  {
      ...
  }
  
  std::vector&lt;int&gt; a;
  std::vector&lt;char&gt; b;
  std::vector&lt;std::string&gt; c;
  auto bar = foo&lt;int, char, std::string&gt;(a, b, c); // Works
  auto bar = foo(a, b, c); // Will not work because B... can't be inferred yet.
  </code></pre>
  
  <p>Additionally, I can implement the constraint that all types within <code>A...</code> must be <code>std::vector</code>s via a <code>static_assert</code> but I can imagine there is a neater way using template types. Please could you also suggest such a method if one exists?</p>
  
  <p>Thanks.</p>