Мне нужна помощь.Мне нужно совершенным образом переслать кортеж определенным образом.Представьте себе, что
template <typename F, typename... Args>
auto package_task(F&& func, Args&&... args) -> std::function<void()>
{
//for the purposes of this example imagine capture to be std::move and
//to be inplace in the lambdas' capture.
auto callable = capture(std::forward<F>(func));
auto params = capture(std::make_tuple(std::forward<Args>(args)...));
return [callable , params]() mutable { std::apply(callable, params); };
}
задача, которая упакована, будет выполнена позже в другом потоке, но когда я вызываю apply, мне нужно "callable", чтобы его параметры были расширены из кортежа и переадресованы точно так, как они были переданы.в функции package_task
.Я не могу использовать forward_as_tuple
, так как я копирую / перемещаю аргументы и вызываемый объект, который будет выполнен позже.Мне нужно что-то вроде
template <typename F, typename... Args>
auto package_task(F&& func, Args&&... args) -> std::function<void()>
{
//for the purposes of this example image capture to be std::move and
//to be inplace in the lambdas' capture.
auto callable = capture(std::forward<F>(func));
auto params = capture(std::make_tuple(std::forward<Args>(args)...));
return [callable , params]() mutable { std::apply_but_expand_as<Args&&…>(callable, params); };
}
Любые идеи будут оценены.