我需要一点帮助。我需要以特定的方式完善一个元组。想象一下
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 时,我需要“可调用”来让它的参数从元组扩展并转发,就像它们在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); };
}
任何想法,将不胜感激。