2010-06-24 69 views
0

我试图在Visual Studio中使用OMPTL。据我了解,我只需要设置/ openmp选项,以便OMPTL使用一些stl函数的多线程实现。在Visual Studio中的OMPTL?

当我不使用/ openmp时,一切都很好,OMPTL将函数映射到它们正常的stl计数器部分,没有多线程。然而随着/ OpenMP的,我得到一个编译错误:

Error 1 error C2572: 'omptl::transform_accumulate' : redefinition of default parameter : parameter 6 ..\include\omptl\omptl_numeric_extentions_par.h 132 

有问题的行说

template <class Iterator, class T, class UnaryFunction, class BinaryFunction> 
T transform_accumulate(Iterator first, Iterator last, const T init, 
    UnaryFunction unary_op, BinaryFunction binary_op, 
    const unsigned P = omp_get_max_threads()) 
{ 
return ::omptl::_TransformAccumulate 
<typename ::std::iterator_traits<Iterator>::iterator_category> 
    ::transform_accumulate(first, last, init, 
    unary_op, binary_op, P); 
} 

有没有办法解决这个问题或者是OMPTL根本就没有使用微软的编译器?

回答

0

编译器似乎不接受此模板声明中的默认参数。从两个声明中删除= omp_get_max_threads()解决了我的问题。

+2

是的,我正在考虑这样做,但我不记得我是否真的尝试过,如果发生任何其他问题。我会尝试,如果我再次围绕该项目:)。 – fritzmg 2010-09-30 09:14:53