diff --git a/STL_Extension/include/CGAL/unordered_flat_map.h b/STL_Extension/include/CGAL/unordered_flat_map.h index 45470c04d48..8eb3203f87e 100644 --- a/STL_Extension/include/CGAL/unordered_flat_map.h +++ b/STL_Extension/include/CGAL/unordered_flat_map.h @@ -26,11 +26,8 @@ # include #endif -#if CGAL_USE_BARE_STD_MAP - #include -#endif - -#include +#include // for std::hash, std::equal_to +#include // for std::allocator namespace CGAL { diff --git a/Triangulation_2/include/CGAL/Triangulation_2/internal/Polyline_constraint_hierarchy_2.h b/Triangulation_2/include/CGAL/Triangulation_2/internal/Polyline_constraint_hierarchy_2.h index 6be1e8dd401..037b2368a5c 100644 --- a/Triangulation_2/include/CGAL/Triangulation_2/internal/Polyline_constraint_hierarchy_2.h +++ b/Triangulation_2/include/CGAL/Triangulation_2/internal/Polyline_constraint_hierarchy_2.h @@ -136,6 +136,24 @@ public: } }; + class Pair_compare { + Compare comp; + + public: + Pair_compare(const Compare& comp) : comp(comp) {} + + bool operator()(const Edge& e1, const Edge& e2) const { + if(comp(e1.first, e2.first)) { + return true; + } else if((! comp(e2.first, e1.first)) && // !less(e1,e2) && !less(e2,e1) == equal + comp(e1.second, e2.second)) { + return true; + } else { + return false; + } + } + }; + class Context { friend class Polyline_constraint_hierarchy_2; private: @@ -155,7 +173,12 @@ public: typedef typename Context_list::iterator Context_iterator; typedef std::set Constraint_set; +#if CGAL_USE_BARE_STD_MAP + typedef std::map Sc_to_c_map; +#else typedef CGAL::unordered_flat_map> Sc_to_c_map; +#endif typedef typename Constraint_set::iterator C_iterator; typedef typename Sc_to_c_map::const_iterator Sc_iterator; typedef Sc_iterator Subconstraint_iterator; @@ -169,7 +192,11 @@ private: public: Polyline_constraint_hierarchy_2(const Compare& comp) : comp(comp) +#if CGAL_USE_BARE_STD_MAP + , sc_to_c_map(Pair_compare(comp)) +#else , sc_to_c_map() +#endif { } Polyline_constraint_hierarchy_2(const Polyline_constraint_hierarchy_2& ch); Polyline_constraint_hierarchy_2(Polyline_constraint_hierarchy_2&&) = default;