Как разделить пакет параметров?

Я бы хотел написать шаблон функции, 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...);
}
6
задан celtschk 11 January 2012 в 01:14
поделиться