title: Transform tuple type
body: <p>So I'm new to boost MPL, and I don't know how to use it with standard types.</p>
  
  <p>I want a metafunction that coverts this type:</p>
  
  <pre><code>std::tuple&lt;T0, T1, ..., TN&gt;
  </code></pre>
  
  <p>Into this:</p>
  
  <pre><code>std::tuple&lt;
    std::function&lt;T0(std::tuple&lt;T0, T1, ...&gt;, std::tuple&lt;T0, T1, ...&gt;)&gt;,
    std::function&lt;T1(std::tuple&lt;T0, T1, ...&gt;, std::tuple&lt;T0, T1, ...&gt;)&gt;,
    ...,
    std::function&lt;TN(...)&gt;
  &gt;
  </code></pre>
  
  <p>and it seems like this could be done with <a href="http://www.boost.org/doc/libs/1_48_0/libs/mpl/doc/refmanual/transform.html" rel="nofollow">transform</a>, but I want to have a tuple-type, not a vector of types. (It doesn't have to use MPL actually, but I guess it would be shorter?)</p>
  
  <p>Background: currently I use totally generic types and rely on all hell breaking loose if used wrong, but I want to calculate the <code>TupleOfFunctions</code> to get a proper error.</p>
  
  <pre><code>template&lt;class TupleOfValues, class TupleOfFunctions&gt;
  void f(TupleOfValues v, TupleOfFunctions fun)
  </code></pre>