gpt4 book ai didi

c++ - 如何使用c++11函数回调声明多个模板参数

转载 作者:行者123 更新时间:2023-11-30 05:02:42 25 4
gpt4 key购买 nike

我需要声明函数,该函数将执行多个任务,在几个核心上拆分并返回结果 vector :

template <typename T, typename R>
void execInParallel(vector<T> &tasks, vector<R> &res,function<R(T &t)>fn, int cores) {
// ...
}

在这种简单的情况下,MSVC 2015 无法确定 RT 应该是 int:

vector<int> tasks,res;
execInParallel(tasks,res, [&](int&t) {
int r = 0;
return r;
}, 2);

并给我这些错误:

error C2672: 'execInParallel': no matching overloaded function found

error C2784: 'void execInParallel(std::vector<_Type,std::allocator<_Ty>> &,std::vector<R,std::allocator<_Other>> &,std::function<R(T &)>,int)': could not deduce template argument for 'std::function<R(T &)>' from 'main::<lambda_cd8cffeb725f03d56af913e6045a67ff>'

我应该如何声明 execInParallel 以便我可以向那里传递任务和结果数组以及执行一个任务的回调?

最佳答案

怎么样

template <typename T, typename R, typename F>
void execInParallel(vector<T> &tasks, vector<R> &res, F&& f, int cores) {
function<R(T &t)> fn(std::forward<F>(f));
}

关于c++ - 如何使用c++11函数回调声明多个模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49718500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com