考虑一个CGAL::Arrangement_2
。现在,我必须像这样遍历它:
using MyArrangement = CGAL::Arrangement_2<MyTraits, MyDcel>;
for(MyArrangement::Face_handle face = map.faces_begin(); face != map.faces_end(); ++face)
{
do_stuff(face);
}
如果我尝试将其迁移为使用C ++ 11样式的基于范围的for
循环,如下所示:
for(auto face : gMap)
{
do_stuff(face)
}
我收到以下错误(强调我的意思):
错误:(1385,13)类型'CGAL :: Arrangement_2>>,true>,std :: __ 1 :: vector>> true,>,std :: __ 1 :: allocator>>,真>>>>,CGAL :: Arr_consolidated_curve_data_traits_2>>,真>>,INT>>,CGAL :: Arr_extended_dcel>>,真>,的std :: __ 1 ::矢量>>,真>>,的std :: __ 1: :allocator>>,true>>>,CGAL :: Arr_consolidated_curve_data_traits_2>>,true>>,int>>,GIS_vertex_data,GIS_halfedge_data,GIS_face_data,CGAL :: Arr_vertex_base>>,true>>>,CGAL :: Gps_halfedge ,true>>,CGAL :: __ Unique_list>>,CGAL :: Gps_face_base>>';的没有可行的 '开始' 功能可用
如果我将for循环更改为使用auto &face
或const auto &face
,则错误是相同的。
没有任何人有解决类似的问题,或一些漂亮的包装,使其工作?我试图避免必须求助于使用这个畸形与拉姆达参数:
template<typename F>
void for_each_face(MyArrangement &map, F callback)
{
for(MyArrangement::Face_handle f = map.faces_begin(); f != map.faces_end(); ++f)
{
callback(f);
}
}