diff --git a/AABB_tree/include/CGAL/AABB_traits.h b/AABB_tree/include/CGAL/AABB_traits.h index 78959df857b..a022070a654 100644 --- a/AABB_tree/include/CGAL/AABB_traits.h +++ b/AABB_tree/include/CGAL/AABB_traits.h @@ -24,6 +24,8 @@ #include #include #include +#include + #include @@ -414,7 +416,7 @@ public: CGAL::SMALLER : CGAL::LARGER; } - CGAL::Comparison_result operator()(const Point& p, const Bounding_box& bb, const Point& bound, Tag_true&) const + CGAL::Comparison_result operator()(const Point& p, const Bounding_box& bb, const Point& bound, const Tag_true&) const { return GeomTraits().do_intersect_3_object() (GeomTraits().construct_sphere_3_object() @@ -422,7 +424,7 @@ public: CGAL::SMALLER : CGAL::LARGER; } - CGAL::Comparison_result operator()(const Point& p, const Bounding_box& bb, const Point& bound, Tag_false&) const + CGAL::Comparison_result operator()(const Point& p, const Bounding_box& bb, const Point& bound, const Tag_false&) const { return GeomTraits().do_intersect_3_object() (GeomTraits().construct_sphere_3_object() @@ -430,10 +432,22 @@ public: CGAL::SMALLER : CGAL::LARGER; } - CGAL::Comparison_result operator()(const Point& p, const Bounding_box& bb, const Point& bound) const - { - return (*this)(p, bb, bound, typename GeomTraits::Has_filtered_predicates_tag()); - } + template ::value> + struct Use_conservative_static_filters + { + typedef CGAL::Tag_false type; + }; + + template + struct Use_conservative_static_filters + { + typedef CGAL::Boolean_tag type; + }; + + CGAL::Comparison_result operator()(const Point& p, const Bounding_box& bb, const Point& bound) const + { + return (*this)(p, bb, bound, typename Use_conservative_static_filters::type()); + } template CGAL::Comparison_result operator()(const Point& p, const Solid& pr, const FT& sq_distance) const