Merge pull request #6650 from afabri/Boolean_set_operations-disambuguate_do_intersect-GF

Regularized Boolean Set Operations:  Help compiler to disambiguate
This commit is contained in:
Laurent Rineau 2022-06-10 16:44:13 +02:00
commit 9c8768515e
3 changed files with 21 additions and 3 deletions

View File

@ -237,7 +237,8 @@ inline bool do_intersect(const General_polygon_with_holes_2<Polygon_>& pgn1,
// With Traits
template <typename InputIterator, typename Traits>
inline bool do_intersect(InputIterator begin, InputIterator end, Traits& traits,
unsigned int k=5)
unsigned int k=5,
std::enable_if_t<CGAL::is_iterator<InputIterator>::value>* = 0)
{ return r_do_intersect(begin, end, traits, k); }
// Without Traits
@ -245,6 +246,7 @@ inline bool do_intersect(InputIterator begin, InputIterator end, Traits& traits,
template <typename InputIterator>
inline bool do_intersect(InputIterator begin, InputIterator end,
Tag_true = Tag_true(), unsigned int k=5,
std::enable_if_t<CGAL::is_iterator<InputIterator>::value>* = 0,
Enable_if_Polygon_2_iterator<InputIterator>* = 0)
{ return r_do_intersect(begin, end, k); }
@ -252,6 +254,7 @@ inline bool do_intersect(InputIterator begin, InputIterator end,
template <typename InputIterator>
inline bool do_intersect(InputIterator begin, InputIterator end,
Tag_false, unsigned int k=5,
std::enable_if_t<CGAL::is_iterator<InputIterator>::value>* = 0,
Enable_if_Polygon_2_iterator<InputIterator>* = 0)
{
typename Iterator_to_gps_traits<InputIterator>::Traits traits;
@ -262,6 +265,7 @@ inline bool do_intersect(InputIterator begin, InputIterator end,
template <typename InputIterator>
inline bool do_intersect(InputIterator begin, InputIterator end,
unsigned int k=5,
std::enable_if_t<CGAL::is_iterator<InputIterator>::value>* = 0,
Disable_if_Polygon_2_iterator<InputIterator>* = 0)
{
typename Iterator_to_gps_traits<InputIterator>::Traits traits;

View File

@ -288,8 +288,7 @@ inline OutputIterator
intersection(InputIterator begin, InputIterator end,
OutputIterator oi, unsigned int k=5,
// workaround to avoid ambiguous calls with kernel functions
typename boost::enable_if
<typename CGAL::is_iterator<InputIterator>>::type* = 0,
std::enable_if_t<CGAL::is_iterator<InputIterator>::value>* = 0,
Disable_if_Polygon_2_iterator<InputIterator>* = 0)
{
typename Iterator_to_gps_traits<InputIterator>::Traits traits;

View File

@ -0,0 +1,15 @@
#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
#include <CGAL/Boolean_set_operations_2.h>
#include <CGAL/Polygon_mesh_processing/corefinement.h>
#include <CGAL/Surface_mesh.h>
int main()
{
typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel;
typedef Kernel::Point_3 Point;
typedef CGAL::Surface_mesh<Point> Surface_mesh;
Surface_mesh mesh;
CGAL::Polygon_mesh_processing::experimental::autorefine_and_remove_self_intersections(mesh);
return 0;
}