Выбор типа возврата для вариабельной лямбда-функции C++11

У меня есть следующая функция;

template<typename T, typename U, typename... Parameters>
void transform(void (*func)(Parameters...))
               {
                  auto lambda_function = [func](T args, U params)
                  {
                     auto combined = std::tuple_cat(args, params);
                     helper(func, combined);
                  };
                  return lambda_function;
               }

Кажется, что я не могу найти подходящий тип возврата или способ вызова, я хотел бы иметь возможность вызывать его так же, как это;

auto func = transform<std::tuple<char,int>, std::tuple<const char*>>(f);
func(arg, param);

Учитывая 'f', 'arg' и 'param' как;

void f(char arg1, int arg2, const char* arg3);
std::tuple<char,int> arg = std::tuple<char,int>('C',-3);
std::tuple<const char*> param = std::tuple<const char*>("PO");

Кто-нибудь получил подсказку или даже решение?

Примечание: код можно найти по адресу; связь

1 ответ

Решение

Вы можете либо вернуться std::functionили создайте именованный тип объекта функции.

Другие вопросы по тегам