英特尔tbb::parallel_for_each编译时错误
Intel tbb::parallel_for_each compile time error
我使用parallel_for_each并行化for循环(在stl列表中迭代),但我在编译时遇到错误,说没有匹配的函数调用。
//TBB headers
#include "tbb/parallel_for_each.h"
class FUNCTOR
{
public:
FUNCTOR(
CLASS_A& tree,
CLASS_B *groups,
const CLASS_C** default_dominator,
const CLASS_D& filter
):
tree(tree),
groups(groups),
default_dominator(default_dominator),
filter(filter)
{}
// Iterator dereferences to a pointer
void operator()(const ELEMENT_OF_LIST_A*& keeper) const
{
/*something*/
}
private:
CLASS_A& tree;
CLASS_B *groups;
const CLASS_C** default_dominator;
const CLASS_D& filter;
};
void some_function
(
CLASS_A& tree,
CLASS_B *groups,
const CLASS_C** default_dominator,
const LIST_A& keepers,
const CLASS_D& filter
)
{
// Some code that claims processors
//LIST_A_ITER begin = keepers.begin();
//LIST_A_ITER end = keepers.end();
//const ELEMENT_OF_LIST_A* keeper = *begin
tbb::parallel_for_each
(
keepers.begin(), keepers.end(),
FUNCTOR(
tree,
groups,
default_dominator,
filter
)
);
}
我得到的错误是:
error: no matching function for call to 'tbb::internal::parallel_do_operator_selector<tbb::internal::parallel_for_each_body<FUNCTOR, LIST_A_ITER>, ELEMENT_OF_LIST_A*>::call(const tbb::internal::parallel_for_each_body<FUNCTOR, LIST_A_ITER>&, ELEMENT_OF_LIST_A*, tbb::internal::do_iteration_task_iter<LIST_A_ITER, tbb::internal::parallel_for_each_body<FUNCTOR, LIST_A_ITER>, ELEMENT_OF_LIST_A*>::feeder_type&)'
note: candidate is: static void tbb::internal::parallel_do_operator_selector<Body, Item>::call(const Body&, A1&, A2&) [with A1 = ELEMENT_OF_LIST_A*, A2 = tbb::internal::parallel_do_feeder_impl<tbb::internal::parallel_for_each_body<FUNCTOR, LIST_A_ITER>, ELEMENT_OF_LIST_A*>, Body = tbb::internal::parallel_for_each_body<FUNCTOR, LIST_A_ITER>, Item = ELEMENT_OF_LIST_A*]
出了什么问题?
谢谢!
FUNCTOR的运算符()具有额外的间接级别。声明时不带*,例如:
const ELEMENT_OF_LIST_A& keeper
相关文章:
- 在缺少函数重载时抛出异常,并带有 std::variant 而不是编译时错误
- 如何在常量计算表达式中获取编译时错误?
- C++根据调用的构造函数强制编译时错误
- 使用 std::iterator_traits<> 时编译时错误不明确
- is_same和variadic模板编译时错误无效转换
- 私有运营商删除会触发 GCC 和 Clang 的编译时错误,但不会在 MSVC 上触发编译时错误
- 运行时与编译时多态性:更好的可读性与编译时错误检查,更重要的是
- 引发编译时错误
- 为什么调用不明确的 ctor 时没有编译时错误?
- 在 sizeof 运算符上强制编译时错误
- 未经授权的私有类成员访问会产生编译时错误而不是运行时错误?
- 从Mac上的终端编译时C 错误
- 使用MINGW-W64使用-M32选项(32位代码)编译时错误
- C++线程错误 - 带有类参数的编译时错误
- 如果编译时间构量参数是错误的,则生成编译时错误
- 尝试调用指向成员函数的函数指针时出现编译时错误
- 编译时错误:删除了联合默认构造函数
- 初始化启动对象时出现编译时错误
- 如果在C++中将成员添加到类中,则会导致编译时错误的技术
- 如何设计可序列化类以使任何非序列化属性都会导致编译时错误