@@ -1490,23 +1490,41 @@ bool autorefine_triangle_soup(PointRange& soup_points,
14901490 [&](const tbb::blocked_range<size_t >& r) {
14911491 for (size_t ti = r.begin (); ti != r.end (); ++ti) {
14921492 const std::array<EK::Point_3, 3 >& t = new_triangles[ti].first ;
1493- visitor.new_subtriangle (offset+ti, tri_inter_ids_inverse[new_triangles[ti].second ]);
14941493 triangle_buffer[ti] = CGAL::make_array (concurrent_get_point_id (t[0 ]), concurrent_get_point_id (t[1 ]), concurrent_get_point_id (t[2 ]));
14951494 }
14961495 }
14971496 );
1498- tbb::parallel_for (tbb::blocked_range<size_t >(0 , new_triangles.size ()),
1499- [&](const tbb::blocked_range<size_t >& r) {
1500- for (size_t ti = r.begin (); ti != r.end (); ++ti)
1501- {
1502- soup_triangles_out[offset + ti] =
1503- { triangle_buffer[ti][0 ]->second ,
1504- triangle_buffer[ti][1 ]->second ,
1505- triangle_buffer[ti][2 ]->second };
1506- visitor.new_subtriangle (soup_triangles_out[offset + ti], soup_triangle[tri_inter_ids_inverse[new_triangles[ti].second ]]);
1497+
1498+ // The constexpr was initially inside the lambda, but that did not compile with VC 2017
1499+ if constexpr (std::is_same_v<Visitor, Wrap_snap_visitor>){
1500+ tbb::parallel_for (tbb::blocked_range<size_t >(0 , new_triangles.size ()),
1501+ [&](const tbb::blocked_range<size_t >& r) {
1502+ for (size_t ti = r.begin (); ti != r.end (); ++ti)
1503+ {
1504+ soup_triangles_out[offset + ti] =
1505+ { triangle_buffer[ti][0 ]->second ,
1506+ triangle_buffer[ti][1 ]->second ,
1507+ triangle_buffer[ti][2 ]->second };
1508+ visitor.new_subdivision (soup_triangles_out[offset + ti], soup_triangles[tri_inter_ids_inverse[new_triangles[ti].second ]]);
1509+ }
15071510 }
1508- }
1509- );
1511+ );
1512+ }
1513+ else
1514+ {
1515+ tbb::parallel_for (tbb::blocked_range<size_t >(0 , new_triangles.size ()),
1516+ [&](const tbb::blocked_range<size_t >& r) {
1517+ for (size_t ti = r.begin (); ti != r.end (); ++ti)
1518+ {
1519+ soup_triangles_out[offset + ti] =
1520+ { triangle_buffer[ti][0 ]->second ,
1521+ triangle_buffer[ti][1 ]->second ,
1522+ triangle_buffer[ti][2 ]->second };
1523+ visitor.new_subtriangle (offset+ti, tri_inter_ids_inverse[new_triangles[ti].second ]);
1524+ }
1525+ }
1526+ );
1527+ }
15101528#else
15111529 // option 2 (without mutex)
15121530 // / Lambda concurrent_get_point_id()
0 commit comments