@@ -1490,23 +1490,41 @@ bool autorefine_triangle_soup(PointRange& soup_points,
1490
1490
[&](const tbb::blocked_range<size_t >& r) {
1491
1491
for (size_t ti = r.begin (); ti != r.end (); ++ti) {
1492
1492
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 ]);
1494
1493
triangle_buffer[ti] = CGAL::make_array (concurrent_get_point_id (t[0 ]), concurrent_get_point_id (t[1 ]), concurrent_get_point_id (t[2 ]));
1495
1494
}
1496
1495
}
1497
1496
);
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
+ }
1507
1510
}
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
+ }
1510
1528
#else
1511
1529
// option 2 (without mutex)
1512
1530
// / Lambda concurrent_get_point_id()
0 commit comments