be more selective before using the statically filtered predicate

a sufficient requirement is that the point type of the traits
is the point type of the kernel
This commit is contained in:
Sébastien Loriot 2014-05-19 10:17:50 +02:00
parent 8aa67dcfa4
commit 319ca016f7
1 changed files with 8 additions and 2 deletions

View File

@ -44,6 +44,7 @@
#include <boost/bind.hpp> #include <boost/bind.hpp>
#include <boost/next_prior.hpp> #include <boost/next_prior.hpp>
#include <boost/type_traits/is_floating_point.hpp> #include <boost/type_traits/is_floating_point.hpp>
#include <boost/type_traits/is_same.hpp>
#include <CGAL/internal/Exact_type_selector.h> #include <CGAL/internal/Exact_type_selector.h>
@ -85,13 +86,18 @@ template <class Traits,
class Is_floating_point= class Is_floating_point=
typename boost::is_floating_point<typename Kernel_traits<typename Traits::Point_3>::Kernel::FT>::type, typename boost::is_floating_point<typename Kernel_traits<typename Traits::Point_3>::Kernel::FT>::type,
class Has_filtered_predicates_tag=typename Kernel_traits<typename Traits::Point_3>::Kernel::Has_filtered_predicates_tag, class Has_filtered_predicates_tag=typename Kernel_traits<typename Traits::Point_3>::Kernel::Has_filtered_predicates_tag,
class Has_cartesian_tag=typename Kernel_traits<typename Traits::Point_3>::Kernel::Kernel_tag > class Has_cartesian_tag=typename Kernel_traits<typename Traits::Point_3>::Kernel::Kernel_tag,
class Has_classical_point_type =
typename boost::is_same<
typename Kernel_traits<typename Traits::Point_3>::Kernel::Point_3,
typename Traits::Point_3 >::type
>
struct Use_advanced_filtering{ struct Use_advanced_filtering{
typedef CGAL::Tag_false type; typedef CGAL::Tag_false type;
}; };
template <class Traits> template <class Traits>
struct Use_advanced_filtering<Traits,boost::true_type,Tag_true,Cartesian_tag>{ struct Use_advanced_filtering<Traits,boost::true_type,Tag_true,Cartesian_tag,boost::true_type>{
typedef typename Kernel_traits<typename Traits::Point_3>::Kernel K; typedef typename Kernel_traits<typename Traits::Point_3>::Kernel K;
typedef CGAL::Boolean_tag<K::Has_static_filters> type; typedef CGAL::Boolean_tag<K::Has_static_filters> type;
}; };