Visual StudioでOMPTLを使用しようとしていました。私が理解している限りでは、OMPTL がいくつかの stl 関数のマルチスレッド実装を使用できるようにするには、/openmp オプションを設定するだけで済みます。
/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 は単に Microsoft のコンパイラでは使用できませんか?