title: Deducing template parameter types for each type in parameter pack
body: <p>Let's say I have a type </p>
  
  <pre><code>template &lt;class T, class U&gt;
  class Pass
  {
  };
  </code></pre>
  
  <p>I want to make a class that will accept a list of <code>Pass</code> objects, each with arbitrary <code>T</code> and <code>U</code> and make 3 <code>std::tuple</code>s.</p>
  
  <p>Something like this:</p>
  
  <pre><code>template&lt;template &lt;typename P1, typename P2&gt; class... T&gt;
      class Test
      {
      public:
          Test(T&lt;P1, P2&gt;... passes) {}
  
          std::tuple&lt;T&lt;P1, P2&gt;...&gt; tuple1;
          std::tuple&lt;P1...&gt; tuple2;
          std::tuple&lt;P2...&gt; tuple3;
      };
  </code></pre>
  
  <p>And then create an instance:</p>
  
  <pre><code>Test t{ Pass&lt;int, float&gt;(), Pass&lt;int, int&gt;(), Pass&lt;std::string, float&gt;() };
  </code></pre>
  
  <p>Is it possible?</p>