Replaced C++11 lambda function by functor

This commit is contained in:
Clement Jamin 2014-06-05 10:59:48 +02:00
parent b5a4a4d88d
commit 24f7e767fa
1 changed files with 15 additions and 4 deletions

View File

@ -47,6 +47,7 @@ inline void compute_the_thing(Truc &thing)
}
#ifdef CGAL_LINKED_WITH_TBB
// For parallel_for
template <typename Array_t>
class Change_array_functor
{
@ -65,6 +66,8 @@ private:
Array_t &m_v;
};
// For parallel_for
// Specialization for std::vector
template <>
class Change_array_functor<std::vector<Truc> >
{
@ -82,6 +85,17 @@ private:
std::vector<Truc> &m_v;
};
// For parallel_do
template <typename Array_t>
class Change_array_functor_2
{
public:
void operator() (typename Array_t::value_type& truc) const
{
compute_the_thing(truc);
}
};
// Parallel_for
// For vector only
double change_array(std::vector<Truc> &v, Parallel_for_tag)
@ -125,10 +139,7 @@ double change_array(Array_t &v, Parallel_do_tag)
t.start();
tbb::parallel_do(
v.begin(), v.end(),
[]( typename Array_t::value_type& truc ) // CJTODO: lambdas ok?
{
compute_the_thing(truc);
});
Change_array_functor_2<Array_t>());
t.stop();
std::cout << " done in " << t.time() << " seconds." << std::endl;
return t.time();