Я бы хотел написать шаблон функции, apply
, который получает некоторую функцию f
, целое число i
и пакет параметров. apply
необходимо распаковать параметры и применить к ним f
, за исключением i
-го параметра, pi
. Для pi
необходимо вызвать другую функцию g
, прежде чем передавать ее в качестве параметра в f
.
Похоже, мне нужен способ разделить пакет параметров на левую, i
-й параметр и правую часть. Это возможно? В коде:
template<int i, typename Function, typename... Parms>
void apply(Function f, Parms... parms)
{
auto lhs = // what goes here?
auto pi = // what goes here?
auto rhs = // what goes here?
f(lhs..., g(pi), rhs...);
}