Преобразовать тип кортежа

Так что я новичок в повышении MPL и не знаю, как использовать его со стандартными типами.

Я хочу метафункцию, которая охватывает этот тип:

std::tuple<T0, T1, ..., TN>

В это:

std::tuple<
  std::function<T0(std::tuple<T0, T1, ...>, std::tuple<T0, T1, ...>)>,
  std::function<T1(std::tuple<T0, T1, ...>, std::tuple<T0, T1, ...>)>,
  ...,
  std::function<TN(...)>
>

и кажется, что это можно сделать спреобразование, но я хочу иметь тип кортежа, а не вектор типов. (Он не должен использовать MPL на самом деле, но я думаю, что это будет короче?)

Предыстория: в настоящее время я использую совершенно универсальные типы и полагаюсь, что все чертовски плохо, если используются неправильно, но я хочу вычислитьTupleOfFunctions чтобы получить правильную ошибку.

template<class TupleOfValues, class TupleOfFunctions>
void f(TupleOfValues v, TupleOfFunctions fun)

Ответы на вопрос(1)

Ваш ответ на вопрос