Merge pull request #5024 from janetournois/Installation-remove_msvc_bug_macro-GF

Installation - matching bug is fixed in MSVC >= 2015
This commit is contained in:
Sebastien Loriot 2020-10-02 15:13:15 +02:00 committed by GitHub
commit 9ce3e3a3c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 6 additions and 1043 deletions

View File

@ -147,17 +147,12 @@ namespace CGAL {
template <class CircularKernel, class Arc1, class Arc2>
class Equal_2
#ifndef CGAL_CFG_MATCHING_BUG_6
: public
CircularKernel::Equal_2
#endif
: public CircularKernel::Equal_2
{
public:
typedef boost::variant< Arc1, Arc2 > Curve_2;
typedef bool result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using CircularKernel::Equal_2::operator();
#else
typedef typename CircularKernel::Circular_arc_point_2
Circular_arc_point_2;
typedef typename CircularKernel::Line_arc_2 Line_arc_2;
@ -185,8 +180,6 @@ namespace CGAL {
operator() ( const Circular_arc_2 &a0, const Line_arc_2 &a1) const
{ return false; }
#endif
result_type
operator()(const Curve_2 &a0, const Curve_2 &a1) const
{

View File

@ -33,9 +33,7 @@ namespace CircularFunctors {
template < class CK >
class Compare_x_2
#ifndef CGAL_CFG_MATCHING_BUG_6
: public CK::Linear_kernel::Compare_x_2
#endif
{
typedef typename CK::Circular_arc_point_2 Circular_arc_point_2;
typedef typename CK::Point_2 Point_2;
@ -43,45 +41,7 @@ namespace CircularFunctors {
public:
typedef typename CK::Linear_kernel::Compare_x_2::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using CK::Linear_kernel::Compare_x_2::operator();
#else
typedef typename CK::Linear_kernel LK;
typedef typename LK::Compare_x_2 LK_Compare_x_2;
typedef typename CK::Line_2 Line_2;
result_type
operator() (const Point_2 &p0,
const Point_2 &p1) const
{
return LK_Compare_x_2()(p0, p1);
}
result_type
operator() (const Point_2 &p0,
const Line_2 &p1,
const Line_2 &p2) const
{
return LK_Compare_x_2()(p0, p1,p2);
}
result_type
operator() (const Line_2 &p0,
const Line_2 &p1,
const Line_2 &p2) const
{
return LK_Compare_x_2()(p0, p1,p2);
}
result_type
operator() (const Line_2 &p0,
const Line_2 &p1,
const Line_2 &p2,
const Line_2 &p3) const
{
return LK_Compare_x_2()(p0, p1,p2,p3);
}
#endif
result_type
operator() (const Circular_arc_point_2 &p0,
@ -93,9 +53,7 @@ namespace CircularFunctors {
template < class CK >
class Compare_y_2
#ifndef CGAL_CFG_MATCHING_BUG_6
: public CK::Linear_kernel::Compare_y_2
#endif
{
typedef typename CK::Circular_arc_point_2 Circular_arc_point_2;
typedef typename CK::Point_2 Point_2;
@ -103,46 +61,7 @@ namespace CircularFunctors {
public:
typedef typename CK::Linear_kernel::Compare_y_2::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using CK::Linear_kernel::Compare_y_2::operator();
#else
typedef typename CK::Linear_kernel LK;
typedef typename LK::Compare_y_2 LK_Compare_y_2;
typedef typename CK::Line_2 Line_2;
result_type
operator() (const Point_2 &p0,
const Point_2 &p1) const
{
return LK_Compare_y_2()(p0, p1);
}
result_type
operator() (const Point_2 &p0,
const Line_2 &p1,
const Line_2 &p2) const
{
return LK_Compare_y_2()(p0, p1,p2);
}
result_type
operator() (const Line_2 &p0,
const Line_2 &p1,
const Line_2 &p2) const
{
return LK_Compare_y_2()(p0, p1,p2);
}
result_type
operator() (const Line_2 &p0,
const Line_2 &p1,
const Line_2 &p2,
const Line_2 &p3) const
{
return LK_Compare_y_2()(p0, p1,p2,p3);
}
#endif
result_type
operator() (const Circular_arc_point_2 &p0,
@ -153,9 +72,7 @@ namespace CircularFunctors {
template < class CK >
class Compare_xy_2
#ifndef CGAL_CFG_MATCHING_BUG_6
: public CK::Linear_kernel::Compare_xy_2
#endif
{
typedef typename CK::Circular_arc_point_2 Circular_arc_point_2;
typedef typename CK::Point_2 Point_2;
@ -163,19 +80,7 @@ namespace CircularFunctors {
public:
typedef typename CK::Linear_kernel::Compare_xy_2::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using CK::Linear_kernel::Compare_xy_2::operator();
#else
result_type
operator() (const Point_2 &p0,
const Point_2 &p1) const
{
typedef typename CK::Linear_kernel LK;
typedef typename LK::Compare_xy_2 LK_Compare_xy_2;
return LK_Compare_xy_2()(p0, p1);
}
#endif
result_type
operator() (const Circular_arc_point_2 &p0,
@ -279,9 +184,7 @@ namespace CircularFunctors {
template < class CK >
class Equal_2
#ifndef CGAL_CFG_MATCHING_BUG_6
: public CK::Linear_kernel::Equal_2
#endif
{
typedef typename CK::Circular_arc_point_2 Circular_arc_point_2;
typedef typename CK::Circular_arc_2 Circular_arc_2;
@ -303,71 +206,7 @@ namespace CircularFunctors {
typedef typename CK::Linear_kernel::Equal_2::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using CK::Linear_kernel::Equal_2::operator();
#else
result_type
operator() (const Point_2 &p0,
const Point_2 &p1) const
{ return LK_Equal_2()(p0,p1); }
result_type
operator() (const Vector_2 &p0,
const Vector_2 &p1) const
{ return LK_Equal_2()(p0,p1); }
result_type
operator() (const Vector_2 &p0,
const Null_vector &p1) const
{ return LK_Equal_2()(p0,p1); }
result_type
operator() (const Null_vector &p0,
const Vector_2 &p1) const
{ return LK_Equal_2()(p0,p1); }
result_type
operator() (const Direction_2 &p0,
const Direction_2 &p1) const
{ return LK_Equal_2()(p0,p1); }
result_type
operator() (const Segment_2 &p0,
const Segment_2 &p1) const
{ return LK_Equal_2()(p0,p1); }
result_type
operator() (const Ray_2 &p0,
const Ray_2 &p1) const
{ return LK_Equal_2()(p0,p1); }
result_type
operator() (const Line_2 &p0,
const Line_2 &p1) const
{ return LK_Equal_2()(p0,p1); }
result_type
operator() (const Triangle_2 &p0,
const Triangle_2 &p1) const
{ return LK_Equal_2()(p0,p1); }
result_type
operator() (const Iso_rectangle_2 &p0,
const Iso_rectangle_2 &p1) const
{ return LK_Equal_2()(p0,p1); }
result_type
operator() (const Circle_2 &p0,
const Circle_2 &p1) const
{ return LK_Equal_2()(p0,p1); }
#endif
result_type
operator() (const Circular_arc_point_2 &p0,
@ -1029,9 +868,7 @@ namespace CircularFunctors {
template <class CK>
class Construct_bbox_2
#ifndef CGAL_CFG_MATCHING_BUG_6
: public CK::Linear_kernel::Construct_bbox_2
#endif
{
typedef typename CK::Circular_arc_2 Circular_arc_2;
typedef typename CK::Circular_arc_point_2 Circular_arc_point_2;
@ -1041,40 +878,7 @@ namespace CircularFunctors {
public:
typedef typename CK::Linear_kernel::Construct_bbox_2::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using CK::Linear_kernel::Construct_bbox_2::operator();
#else
typedef typename CK::Linear_kernel LK;
typedef typename LK::Construct_bbox_2 LK_Construct_bbox_2;
typedef typename CK::Point_2 Point_2;
typedef typename CK::Segment_2 Segment_2;
typedef typename CK::Triangle_2 Triangle_2 ;
typedef typename CK::Iso_rectangle_2 Iso_rectangle_2 ;
result_type operator() (const Circle_2 & a) const
{
return LK_Construct_bbox_2()(a);
}
result_type operator() (const Point_2 & a) const
{
return LK_Construct_bbox_2()(a);
}
result_type operator() (const Segment_2 & a) const
{
return LK_Construct_bbox_2()(a);
}
result_type operator() (const Triangle_2 & a) const
{
return LK_Construct_bbox_2()(a);
}
result_type operator() (const Iso_rectangle_2 & a) const
{
return LK_Construct_bbox_2()(a);
}
#endif
result_type operator() (const Circular_arc_point_2 & a) const
{
@ -1095,9 +899,7 @@ namespace CircularFunctors {
template <class CK>
class Bounded_side_2
#ifndef CGAL_CFG_MATCHING_BUG_6
: public CK::Linear_kernel::Bounded_side_2
#endif
{
typedef typename CK::Circle_2 Circle_2;
typedef typename CK::Circular_arc_point_2 Circular_arc_point_2;
@ -1105,28 +907,7 @@ namespace CircularFunctors {
public:
typedef typename CK::Linear_kernel::Bounded_side_2::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using CK::Linear_kernel::Bounded_side_2::operator();
#else
typedef typename CK::Point_2 Point_2;
typedef typename CK::Triangle_2 Triangle_2;
typedef typename CK::Iso_rectangle_2 Iso_rectangle_2;
typedef typename CK::Linear_kernel LK;
typedef typename LK::Bounded_side_2 LK_Bounded_side_2;
result_type
operator()(const Circle_2& c, const Point_2& p) const
{ return LK_Bounded_side_2()(c,p); }
result_type
operator()(const Triangle_2& c, const Point_2& p) const
{ return LK_Bounded_side_2()(c,p); }
result_type
operator()(const Iso_rectangle_2& c, const Point_2& p) const
{ return LK_Bounded_side_2()(c,p); }
#endif
result_type
operator()(const Circle_2& c, const Circular_arc_point_2& p) const
@ -1136,9 +917,7 @@ namespace CircularFunctors {
template <class CK>
class Has_on_bounded_side_2
#ifndef CGAL_CFG_MATCHING_BUG_6
: public CK::Linear_kernel::Has_on_bounded_side_2
#endif
{
typedef typename CK::Circle_2 Circle_2;
typedef typename CK::Circular_arc_point_2 Circular_arc_point_2;
@ -1146,27 +925,7 @@ namespace CircularFunctors {
public:
typedef typename CK::Linear_kernel::Has_on_bounded_side_2::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using CK::Linear_kernel::Has_on_bounded_side_2::operator();
#else
typedef typename CK::Point_2 Point_2;
typedef typename CK::Triangle_2 Triangle_2;
typedef typename CK::Iso_rectangle_2 Iso_rectangle_2;
typedef typename CK::Linear_kernel LK;
typedef typename LK::Has_on_bounded_side_2 LK_Has_on_bounded_side_2;
result_type
operator()(const Circle_2& c, const Point_2& p) const
{ return LK_Has_on_bounded_side_2()(c,p); }
result_type
operator()(const Triangle_2& c, const Point_2& p) const
{ return LK_Has_on_bounded_side_2()(c,p); }
result_type
operator()(const Iso_rectangle_2& c, const Point_2& p) const
{ return LK_Has_on_bounded_side_2()(c,p); }
#endif
result_type
operator()(const Circle_2& c, const Circular_arc_point_2& p) const
@ -1176,9 +935,7 @@ namespace CircularFunctors {
template <class CK>
class Has_on_unbounded_side_2
#ifndef CGAL_CFG_MATCHING_BUG_6
: public CK::Linear_kernel::Has_on_unbounded_side_2
#endif
{
typedef typename CK::Circle_2 Circle_2;
typedef typename CK::Circular_arc_point_2 Circular_arc_point_2;
@ -1186,27 +943,7 @@ namespace CircularFunctors {
public:
typedef typename CK::Linear_kernel::Has_on_unbounded_side_2::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using CK::Linear_kernel::Has_on_unbounded_side_2::operator();
#else
typedef typename CK::Point_2 Point_2;
typedef typename CK::Triangle_2 Triangle_2;
typedef typename CK::Iso_rectangle_2 Iso_rectangle_2;
typedef typename CK::Linear_kernel LK;
typedef typename LK::Has_on_unbounded_side_2 LK_Has_on_unbounded_side_2;
result_type
operator()(const Circle_2& c, const Point_2& p) const
{ return LK_Has_on_unbounded_side_2()(c,p); }
result_type
operator()(const Triangle_2& c, const Point_2& p) const
{ return LK_Has_on_unbounded_side_2()(c,p); }
result_type
operator()(const Iso_rectangle_2& c, const Point_2& p) const
{ return LK_Has_on_unbounded_side_2()(c,p); }
#endif
result_type
operator()(const Circle_2& c, const Circular_arc_point_2& p) const
@ -1252,28 +989,13 @@ namespace CircularFunctors {
template <typename CK>
class Construct_center_2
#ifndef CGAL_CFG_MATCHING_BUG_6
: public CK::Linear_kernel::Construct_center_2
#endif
{
typedef typename CK::Circular_arc_2 Circular_arc_2;
public:
typedef typename CK::Linear_kernel::Construct_center_2::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using CK::Linear_kernel::Construct_center_2::operator();
#else
using CK::Linear_kernel::Construct_center_2::operator();
typedef typename CK::Linear_kernel LK;
typedef typename LK::Construct_center_2 LK_Construct_center_2;
typedef typename CK::Point_2 Point_2;
typedef typename CK::Circle_2 Circle_2;
public:
result_type
operator()( const Circle_2& c) const
{ return LK_Construct_center_2()(c); }
#endif
result_type
operator()(const Circular_arc_2& c) const
{ return c.rep().center(); }

View File

@ -43,31 +43,7 @@ public:
typedef typename CK_Compare_x_2::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else
template <typename T1, typename T2>
result_type
operator()(const T1& t1, const T2& t2) const
{
return Base()(t1,t2);
}
template <typename T1, typename T2, typename T3>
result_type
operator()(const T1& t1, const T2& t2, const T3& t3) const
{
return Base()(t1,t2,t3);
}
template <typename T1, typename T2, typename T3, typename T4>
result_type
operator()(const T1& t1, const T2& t2, const T3& t3, const T4& t4) const
{
return Base()(t1,t2,t3,t4);
}
#endif
result_type
operator()( const Circular_arc_point_2 &a, const Circular_arc_point_2 &b) const
@ -105,29 +81,7 @@ public:
return CK_Compare_y_2()(p0, p1);
}
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else
template <typename T1, typename T2>
result_type
operator()(const T1& t1, const T2& t2) const
{
return Base()(t1,t2);
}
template <typename T1, typename T2, typename T3>
result_type
operator()(const T1& t1, const T2& t2, const T3& t3) const
{
return Base()(t1,t2,t3);
}
template <typename T1, typename T2, typename T3, typename T4>
result_type
operator()(const T1& t1, const T2& t2, const T3& t3, const T4& t4) const
{
return Base()(t1,t2,t3,t4);
}
#endif
result_type
operator()( const Circular_arc_point_2 &a, const Circular_arc_point_2 &b) const
@ -158,17 +112,7 @@ public:
typedef typename Base::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else
template <typename T1, typename T2>
result_type
operator()(const T1& t1, const T2& t2) const
{
return Base()(t1,t2);
}
#endif
public:
result_type
@ -201,16 +145,8 @@ public:
typedef typename CK_In_x_range_2::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else
template <typename T1, typename T2>
result_type
operator()(const T1& t1, const T2& t2) const
{
return Base()(t1,t2);
}
#endif
private:
template <class Arc_2>
@ -273,37 +209,8 @@ public:
typedef typename CK_Compare_y_at_x_2::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else
template <typename T1, typename T2>
result_type
operator()(const T1& t1, const T2& t2) const
{
return Base()(t1,t2);
}
template <typename T1, typename T2, typename T3>
result_type
operator()(const T1& t1, const T2& t2, const T3& t3) const
{
return Base()(t1,t2,t3);
}
template <typename T1, typename T2, typename T3, typename T4>
result_type
operator()(const T1& t1, const T2& t2, const T3& t3, const T4& t4) const
{
return Base()(t1,t2,t3,t4);
}
template <typename T1, typename T2, typename T3, typename T4, typename T5>
result_type
operator()(const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5) const
{
return Base()(t1,t2,t3,t4,t5);
}
#endif
private:
template <class Arc_2>
@ -353,16 +260,9 @@ class Has_on_2 : public BK::Circular_kernel:: template Base< BK >::Type::Has_on_
public:
typedef typename CK_Has_on_2::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else
template <typename T1, typename T2>
result_type
operator()(const T1& t1, const T2& t2) const
{
return Base()(t1,t2);
}
#endif
private:
template <class Arc_2>
@ -395,9 +295,7 @@ public:
template <class BK>
class Equal_2
#ifndef CGAL_CFG_MATCHING_BUG_6
: public BK::Circular_kernel:: template Base< BK >::Type::Equal_2
#endif
{
typedef typename BK::Circular_kernel::
template Base< BK >::Type::Equal_2 CK_Equal_2;
@ -420,16 +318,7 @@ public:
typedef typename CK_Equal_2::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else
template <typename T1, typename T2>
result_type
operator()(const T1& t1, const T2& t2) const
{
return Base()(t1,t2);
}
#endif
private:
@ -519,16 +408,7 @@ public:
typedef typename CK_Do_overlap_2::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else
template <typename T1, typename T2>
result_type
operator()(const T1& t1, const T2& t2) const
{
return Base()(t1,t2);
}
#endif
private:

View File

@ -40,7 +40,6 @@ namespace CGAL {
namespace SphericalFunctors {
#ifndef CGAL_CFG_MATCHING_BUG_6
#define CGAL_SPHERICAL_KERNEL_MACRO_FUNCTOR_COMPARE_(V)\
template < class SK > \
class Compare_ ##V## _3: public SK::Linear_kernel::Compare_ ##V## _3{\
@ -63,38 +62,6 @@ template < class SK > \
{ return SphericalFunctors::compare_ ##V <SK>(p0, p1); }\
};\
#else
#define CGAL_SPHERICAL_KERNEL_MACRO_FUNCTOR_COMPARE_(V)\
template < class SK > \
class Compare_ ##V## _3 {\
typedef typename SK::Circular_arc_point_3 Circular_arc_point_3;\
typedef typename SK::Point_3 Point_3;\
public:\
typedef typename SK::Linear_kernel::Compare_ ##V## _3 LK_Compare_ ##V## _3;\
typedef typename SK::Linear_kernel::Compare_ ##V## _3::result_type result_type;\
\
result_type\
operator() (const Circular_arc_point_3 &p0,\
const Circular_arc_point_3 &p1) const\
{ return SphericalFunctors::compare_ ##V <SK>(p0, p1); }\
\
result_type\
operator() (const Circular_arc_point_3 &p0,\
const Point_3 &p1) const\
{ return SphericalFunctors::compare_ ##V <SK>(p0, p1); }\
\
result_type\
operator() (const Point_3 &p0,\
const Circular_arc_point_3 &p1) const\
{ return SphericalFunctors::compare_ ##V <SK>(p0, p1); }\
\
result_type\
operator() (const Point_3 &p0,\
const Point_3 &p1) const\
{ return LK_Compare_ ##V## _3 ()(p0, p1); }\
};
#endif
CGAL_SPHERICAL_KERNEL_MACRO_FUNCTOR_COMPARE_(x)
CGAL_SPHERICAL_KERNEL_MACRO_FUNCTOR_COMPARE_(y)
CGAL_SPHERICAL_KERNEL_MACRO_FUNCTOR_COMPARE_(z)
@ -145,9 +112,7 @@ template < class SK > \
template < class SK >
class Equal_3
#ifndef CGAL_CFG_MATCHING_BUG_6
: public SK::Linear_kernel::Equal_3
#endif
{
typedef typename SK::Linear_kernel LK;
typedef typename LK::Equal_3 LK_Equal_3;
@ -173,72 +138,7 @@ template < class SK > \
typedef typename SK::Linear_kernel::Equal_3::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using SK::Linear_kernel::Equal_3::operator();
#else
result_type
operator() (const Point_3 &p0,
const Point_3 &p1) const
{ return LK_Equal_3()(p0,p1); }
result_type
operator() (const Vector_3 &d0,
const Vector_3 &d1) const
{ return LK_Equal_3()(d0,d1); }
result_type
operator() (const Direction_3 &d0,
const Direction_3 &d1) const
{ return LK_Equal_3()(d0,d1); }
result_type
operator() (const Line_3 &l0,
const Line_3 &l1) const
{ return LK_Equal_3()(l0,l1); }
result_type
operator() (const Segment_3 &l0,
const Segment_3 &l1) const
{ return LK_Equal_3()(l0,l1); }
result_type
operator() (const Ray_3 &l0,
const Ray_3 &l1) const
{ return LK_Equal_3()(l0,l1); }
result_type
operator() (const Triangle_3 &l0,
const Triangle_3 &l1) const
{ return LK_Equal_3()(l0,l1); }
result_type
operator() (const Tetrahedron_3 &l0,
const Tetrahedron_3 &l1) const
{ return LK_Equal_3()(l0,l1); }
result_type
operator() (const Iso_cuboid_3 &l0,
const Iso_cuboid_3 &l1) const
{ return LK_Equal_3()(l0,l1); }
result_type
operator() (const Plane_3 &l0,
const Plane_3 &l1) const
{ return LK_Equal_3()(l0,l1); }
result_type
operator() (const Circle_3 &c0,
const Circle_3 &c1) const
{ return LK_Equal_3()(c0, c1); }
result_type
operator() (const Sphere_3 &c0,
const Sphere_3 &c1) const
{ return LK_Equal_3()(c0, c1); }
#endif
result_type
operator() (const Circular_arc_point_3 &c0,
@ -951,9 +851,7 @@ template < class SK > \
template < class SK >
class Has_on_3
#ifndef CGAL_CFG_MATCHING_BUG_6
: public SK::Linear_kernel::Has_on_3
#endif
{
typedef typename SK::Point_3 Point_3;
typedef typename SK::Sphere_3 Sphere_3;
@ -971,54 +869,7 @@ template < class SK > \
public:
typedef typename SK::Linear_kernel::Has_on_3::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using SK::Linear_kernel::Has_on_3::operator();
#else
typedef typename SK::Linear_kernel::Has_on_3 LK_Has_on_3;
result_type
operator()( const Line_3& l, const Point_3& p) const
{ return LK_Has_on_3()(l,p); }
result_type
operator()( const Ray_3& r, const Point_3& p) const
{ return LK_Has_on_3()(r,p); }
result_type
operator()( const Segment_3& s, const Point_3& p) const
{ return LK_Has_on_3()(s,p); }
result_type
operator()( const Plane_3& pl, const Point_3& p) const
{ return LK_Has_on_3()(pl,p); }
result_type
operator()( const Plane_3& pl, const Line_3& l) const
{ return LK_Has_on_3()(pl,l); }
result_type
operator()( const Triangle_3& t, const Point_3& p) const
{
return LK_Has_on_3()(t,p);
}
result_type
operator()(const Sphere_3 &a, const Point_3 &p) const
{ return LK_Has_on_3()(a,p); }
result_type
operator()(const Circle_3 &a, const Point_3 &p) const
{ return LK_Has_on_3()(a,p); }
result_type
operator()(const Sphere_3 &a, const Circle_3 &p) const
{ return LK_Has_on_3()(a,p); }
result_type
operator()(const Plane_3 &a, const Circle_3 &p) const
{ return LK_Has_on_3()(a,p); }
#endif
result_type
operator()(const Sphere_3 &a, const Circular_arc_point_3 &p) const
@ -1468,9 +1319,7 @@ template < class SK > \
template <class SK>
class Construct_bbox_3
#ifndef CGAL_CFG_MATCHING_BUG_6
: public SK::Linear_kernel::Construct_bbox_3
#endif
{
typedef typename SK::Circular_arc_point_3 Circular_arc_point_3;
typedef typename SK::Circular_arc_3 Circular_arc_3;
@ -1487,57 +1336,7 @@ template < class SK > \
typedef typename SK::Linear_kernel::Construct_bbox_3::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using SK::Linear_kernel::Construct_bbox_3::operator();
#else
typedef typename SK::Linear_kernel LK;
typedef typename LK::Construct_bbox_3 LK_Construct_bbox_3;
result_type
operator()(const Point_3& p) const
{
return LK_Construct_bbox_3()(p);
}
result_type
operator()(const Segment_3& p) const
{
return LK_Construct_bbox_3()(p);
}
result_type
operator()(const Triangle_3& p) const
{
return LK_Construct_bbox_3()(p);
}
result_type
operator()(const Iso_cuboid_3& p) const
{
return LK_Construct_bbox_3()(p);
}
result_type
operator()(const Tetrahedron_3& p) const
{
return LK_Construct_bbox_3()(p);
}
result_type
operator()(const Sphere_3& p) const
{
return LK_Construct_bbox_3()(p);
}
result_type
operator()(const Circle_3& p) const
{
return LK_Construct_bbox_3()(p);
}
#endif
result_type operator() (const Circular_arc_point_3 & c) const
{ return c.rep().bbox(); }
@ -1552,9 +1351,7 @@ template < class SK > \
template <class SK>
class Compute_approximate_squared_length_3
#ifndef CGAL_CFG_MATCHING_BUG_6
: public SK::Linear_kernel::Compute_approximate_squared_length_3
#endif
{
typedef typename SK::Circle_3 Circle_3;
typedef typename SK::Circular_arc_3 Circular_arc_3;
@ -1563,13 +1360,7 @@ template < class SK > \
public:
typedef double result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using SK::Linear_kernel::Compute_approximate_squared_length_3::operator();
#else
result_type
operator() (const Circle_3 & c) const
{ return CGAL_PI * CGAL_PI * 4.0 * to_double(c.squared_radius()); }
#endif
result_type operator() (const Circular_arc_3 & c) const
{ return c.rep().approximate_squared_length(); }
@ -1578,9 +1369,7 @@ template < class SK > \
template <class SK>
class Compute_approximate_angle_3
#ifndef CGAL_CFG_MATCHING_BUG_6
: public SK::Linear_kernel::Compute_approximate_angle_3
#endif
{
typedef typename SK::Point_3 Point_3;
typedef typename SK::Vector_3 Vector_3;
@ -1591,22 +1380,8 @@ template < class SK > \
typedef double result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using SK::Linear_kernel::Compute_approximate_angle_3::operator();
#else
typedef typename SK::Linear_kernel::Compute_approximate_angle_3 LK_Compute_approximate_angle_3;
FT operator()(const Point_3& p, const Point_3& q, const Point_3& r) const
{
return LK_Compute_approximate_angle_3()(p,q,r);
}
FT operator()(const Vector_3& u, const Vector_3& v) const
{
return LK_Compute_approximate_angle_3()(u,v);
}
#endif
result_type operator() (const Circular_arc_3 & c) const
{ return c.rep().approximate_angle(); }
@ -1614,9 +1389,7 @@ template < class SK > \
template <class SK>
class Bounded_side_3
#ifndef CGAL_CFG_MATCHING_BUG_6
: public SK::Linear_kernel::Bounded_side_3
#endif
{
typedef typename SK::Sphere_3 Sphere_3;
typedef typename SK::Circle_3 Circle_3;
@ -1626,29 +1399,7 @@ template < class SK > \
public:
typedef typename SK::Linear_kernel::Bounded_side_3::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using SK::Linear_kernel::Bounded_side_3::operator();
#else
typedef typename SK::Tetrahedron_3 Tetrahedron_3;
typedef typename SK::Iso_cuboid_3 Iso_cuboid_3;
typedef typename SK::Linear_kernel::Bounded_side_3 LK_Bounded_side_3;
result_type
operator()( const Sphere_3& s, const Point_3& p) const
{ return LK_Bounded_side_3()(s,p); }
result_type
operator()( const Tetrahedron_3& t, const Point_3& p) const
{ return LK_Bounded_side_3()(t,p); }
result_type
operator()( const Iso_cuboid_3& c, const Point_3& p) const
{ return LK_Bounded_side_3()(c,p); }
result_type
operator()(const Circle_3& c, const Point_3& p) const
{ return LK_Bounded_side_3()(c,p); }
#endif
result_type
operator()( const Sphere_3& s, const Circular_arc_point_3& p) const
@ -1664,9 +1415,7 @@ template < class SK > \
template <class SK>
class Has_on_bounded_side_3
#ifndef CGAL_CFG_MATCHING_BUG_6
: public SK::Linear_kernel::Has_on_bounded_side_3
#endif
{
typedef typename SK::Sphere_3 Sphere_3;
typedef typename SK::Circle_3 Circle_3;
@ -1676,29 +1425,7 @@ template < class SK > \
public:
typedef typename SK::Linear_kernel::Has_on_bounded_side_3::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using SK::Linear_kernel::Has_on_bounded_side_3::operator();
#else
typedef typename SK::Tetrahedron_3 Tetrahedron_3;
typedef typename SK::Iso_cuboid_3 Iso_cuboid_3;
typedef typename SK::Linear_kernel::Has_on_bounded_side_3 LK_Has_on_bounded_side_3;
result_type
operator()( const Sphere_3& s, const Point_3& p) const
{ return LK_Has_on_bounded_side_3()(s,p); }
result_type
operator()( const Tetrahedron_3& t, const Point_3& p) const
{ return LK_Has_on_bounded_side_3()(t,p); }
result_type
operator()( const Iso_cuboid_3& c, const Point_3& p) const
{ return LK_Has_on_bounded_side_3()(c,p); }
result_type
operator()(const Circle_3& c, const Point_3& p) const
{ return LK_Has_on_bounded_side_3()(c,p); }
#endif
result_type
operator()( const Sphere_3& s, const Circular_arc_point_3& p) const
@ -1714,9 +1441,7 @@ template < class SK > \
template <class SK>
class Has_on_unbounded_side_3
#ifndef CGAL_CFG_MATCHING_BUG_6
: public SK::Linear_kernel::Has_on_unbounded_side_3
#endif
{
typedef typename SK::Sphere_3 Sphere_3;
typedef typename SK::Circle_3 Circle_3;
@ -1726,29 +1451,7 @@ template < class SK > \
public:
typedef typename SK::Linear_kernel::Has_on_unbounded_side_3::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using SK::Linear_kernel::Has_on_unbounded_side_3::operator();
#else
typedef typename SK::Tetrahedron_3 Tetrahedron_3;
typedef typename SK::Iso_cuboid_3 Iso_cuboid_3;
typedef typename SK::Linear_kernel::Has_on_unbounded_side_3 LK_Has_on_unbounded_side_3;
result_type
operator()( const Sphere_3& s, const Point_3& p) const
{ return LK_Has_on_unbounded_side_3()(s,p); }
result_type
operator()( const Tetrahedron_3& t, const Point_3& p) const
{ return LK_Has_on_unbounded_side_3()(t,p); }
result_type
operator()( const Iso_cuboid_3& c, const Point_3& p) const
{ return LK_Has_on_unbounded_side_3()(c,p); }
result_type
operator()(const Circle_3& c, const Point_3& p) const
{ return LK_Has_on_unbounded_side_3()(c,p); }
#endif
result_type
operator()( const Sphere_3& s, const Circular_arc_point_3& p) const

View File

@ -373,18 +373,7 @@ public:
typedef typename Kernel_::Point_2 Point_2;
typedef typename Kernel_::Weighted_point_2 Weighted_point_2;
#ifndef CGAL_CFG_MATCHING_BUG_6
using BaseClass::Construct_point_2::operator();
#else // CGAL_CFG_MATCHING_BUG_6
template <class ... T>
Point_2 operator()(const T& ...t) const
{
return BaseClass().construct_point_2_object()(t...);
}
#endif // CGAL_CFG_MATCHING_BUG_6
const Point_2& operator()(const Point_2& p) const
{
@ -437,17 +426,7 @@ public:
typedef typename Kernel_::Point_3 Point_3;
typedef typename Kernel_::Weighted_point_3 Weighted_point_3;
#ifndef CGAL_CFG_MATCHING_BUG_6
using BaseClass::Construct_point_3::operator();
#else // CGAL_CFG_MATCHING_BUG_6
template <class ... T>
Point_3 operator()(const T& ...t) const
{
return BaseClass().construct_point_3_object()(t...);
}
#endif // CGAL_CFG_MATCHING_BUG_6
using BaseClass::Construct_point_3::operator();
const Point_3& operator()(const Point_3& p) const
{

View File

@ -41,25 +41,7 @@ public:
typedef typename Base::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else // CGAL_CFG_MATCHING_BUG_6
template <typename T1, typename T2>
result_type
operator()(const T1& t1, const T2& t2) const
{
return Base()(t1,t2);
}
template <typename T1, typename T2, typename T3, typename T4>
result_type
operator()(const T1& t1, const T2& t2, const T3& t3, const T4& t4) const
{
return Base()(t1,t2,t3,t4);
}
#endif // CGAL_CFG_MATCHING_BUG_6
Sign sign_with_error(const double x, const double error) const {
if(x > error) return POSITIVE;

View File

@ -30,16 +30,7 @@ namespace CGAL { namespace internal { namespace Static_filters_predicates {
public:
typedef typename Base::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else
result_type
operator()(const Point_3& p, const FT& w) const
{
return Base::operator()(p,w);
}
#endif
result_type operator() (
const Point_3& p,

View File

@ -33,16 +33,7 @@ namespace CGAL { namespace internal { namespace Static_filters_predicates {
public:
typedef typename Base::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else
result_type
operator()(const Weighted_point_3& p, const FT& w) const
{
return Base::operator()(p,w);
}
#endif
result_type operator() (
const Weighted_point_3& p,

View File

@ -39,31 +39,7 @@ public:
typedef typename Base::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else // CGAL_CFG_MATCHING_BUG_6
template <typename T>
result_type
operator()(const T& t1, const T& t2, const T& t3) const
{
return Base()(t1,t2,t3);
}
template <typename T>
result_type
operator()(const T& t1, const T& t2, const T& t3, const T& t4) const
{
return Base()(t1,t2,t3, t4);
}
result_type
operator()(const Point_2& p, const Line_2& l1, const Line_2& l2) const
{
return Base()(p,l1,l2);
}
#endif // CGAL_CFG_MATCHING_BUG_6
result_type operator()(const Point_2 &p, const Point_2& q) const
{

View File

@ -39,31 +39,7 @@ public:
typedef typename Base::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else // CGAL_CFG_MATCHING_BUG_6
template <typename T>
result_type
operator()(const T& t1, const T& t2, const T& t3) const
{
return Base()(t1,t2,t3);
}
template <typename T>
result_type
operator()(const T& t1, const T& t2, const T& t3, const T& t4) const
{
return Base()(t1,t2,t3, t4);
}
result_type
operator()(const Point_2& p, const Line_2& l1, const Line_2& l2) const
{
return Base()(p,l1,l2);
}
#endif // CGAL_CFG_MATCHING_BUG_6
result_type operator()(const Point_2 &p, const Point_2& q) const
{

View File

@ -38,17 +38,7 @@ public:
typedef typename Base::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else // CGAL_CFG_MATCHING_BUG_6
template <typename T1, typename T2>
result_type
operator()(const T1& t1, const T2& t2) const
{
return Base()(t1,t2);
}
#endif // CGAL_CFG_MATCHING_BUG_6
// The internal::do_intersect(..) function
// only performs orientation tests on the vertices

View File

@ -50,18 +50,7 @@ public:
typedef typename Base::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else // CGAL_CFG_MATCHING_BUG_6
template <typename T1, typename T2>
result_type
operator()(const T1& t1, const T2& t2) const
{
return Base()(t1,t2);
}
#endif // CGAL_CFG_MATCHING_BUG_6
Sign sign_with_error(const double x, const double error) const {
if(x > error) return POSITIVE;

View File

@ -40,18 +40,7 @@ public:
typedef typename Base::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else // CGAL_CFG_MATCHING_BUG_6
template <typename T>
result_type
operator()(const T& t1, const T& t2) const
{
return Base()(t1,t2);
}
#endif // CGAL_CFG_MATCHING_BUG_6
result_type operator()(const Point_2 &p, const Point_2& q) const
{

View File

@ -39,18 +39,7 @@ public:
typedef typename Base::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else // CGAL_CFG_MATCHING_BUG_6
template <typename T>
result_type
operator()(const T& t1, const T& t2) const
{
return Base()(t1,t2);
}
#endif // CGAL_CFG_MATCHING_BUG_6
result_type operator()(const Point_3 &p, const Point_3& q) const
{

View File

@ -38,18 +38,7 @@ public:
typedef typename Base::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else // CGAL_CFG_MATCHING_BUG_6
template <typename T>
result_type
operator()(const T& t) const
{
return Base()(t);
}
#endif // end CGAL_CFG_MATCHING_BUG_6
result_type
operator()(const Segment_3& s) const

View File

@ -35,21 +35,8 @@ public:
typedef typename Base::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else
result_type
operator()(const Vector_2& u, const Vector_2& v) const
{
return Base::operator()(u,v);
}
result_type
operator()(const Circle_2& c) const
{
return Base::operator()(c);
}
#endif
Orientation
operator()(const Point_2 &p, const Point_2 &q, const Point_2 &r) const

View File

@ -36,27 +36,7 @@ class Orientation_3
public:
typedef typename Base::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else
result_type
operator()(const Vector_3& u, const Vector_3& v, const Vector_3& w) const
{
return Base::operator()(u,v,w);
}
result_type
operator()(const Sphere_3& s) const
{
return Base::operator()(s);
}
result_type
operator()(const Tetrahedron_3& t) const
{
return Base::operator()(t);
}
#endif
result_type
operator()(const Point_3 &p, const Point_3 &q,

View File

@ -32,16 +32,7 @@ namespace CGAL { namespace internal { namespace Static_filters_predicates {
public:
typedef typename Base::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else
result_type
operator()(const Weighted_point_3& p, const Weighted_point_3& q) const
{
return Base::operator()(p,q);
}
#endif
void
msvc_workaround(double& max1, double& max2, double& max3, double& max4, double& max5, double& RT_tmp_result,

View File

@ -1,28 +0,0 @@
// Copyright (c) 2016 GeometryFactory (France). All rights reserved.
//
// This file is part of CGAL (www.cgal.org)
//
// $URL$
// $Id$
// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-Commercial
//
//
// Author(s) : Laurent Rineau
#ifndef CGAL_MSVC_COMPILER_CONFIG_H
#define CGAL_MSVC_COMPILER_CONFIG_H
// For all known version of MSVC. Actually we do not really have a
// test for that bug.
#define CGAL_CFG_MATCHING_BUG_6 1
// Fixed since MSVC 2015
#define CGAL_CFG_MATCHING_BUG_7 1
// for all known version of MSVC
#define CGAL_CFG_MATCHING_BUG_8 1
// Should be only for MSVC 2012 and 2013 in Release
#define CGAL_CFG_FPU_ROUNDING_MODE_UNWINDING_VC_BUG 1
#endif // CGAL_MSVC_COMPILER_CONFIG_H

View File

@ -159,9 +159,6 @@
#if CGAL_HEADER_ONLY
# include <CGAL/internal/enable_third_party_libraries.h>
# if(BOOST_MSVC)
# include <CGAL/MSVC_compiler_config.h>
# endif
#else
# include <CGAL/compiler_config.h>
#endif

View File

@ -99,29 +99,11 @@ enum Box_parameter_space_2
EXTERIOR
};
#ifdef CGAL_CFG_MATCHING_BUG_5
template < typename T, typename U >
inline
T enum_cast_bug(const U& u, const T*)
{ return static_cast<T>(u); }
template < typename T, typename U >
inline
typename Same_uncertainty<T,U>::type enum_cast(const U& u)
{ return enum_cast_bug(u, (const T*)0); }
#else
template < typename T, typename U >
inline
T enum_cast(const U& u)
{ return static_cast<T>(u); }
#endif
} //namespace CGAL
#endif // CGAL_ENUM_H

View File

@ -103,21 +103,7 @@ public:
: Base(o2b), _dom(dom)
{ }
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else
result_type
operator()(const Vector_2& u, const Vector_2& v) const
{
return Base::operator()(u, v);
}
result_type
operator()(const Circle_2& c) const
{
return Base::operator()(c);
}
#endif
/// Normal static orientation test, copied from Orientation_2
result_type operator()(const Point_2 &p, const Point_2 &q, const Point_2 &r) const

View File

@ -53,21 +53,7 @@ public:
: Base(o3b), _dom(dom)
{ }
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else
result_type
operator()(const Vector_3& u, const Vector_3& v, const Vector_3& w) const
{
return Base::operator()(u,v,w);
}
result_type
operator()(const Sphere_3& s) const
{
return Base::operator()(s);
}
#endif
result_type
operator()(const Point_3 &p, const Point_3 &q,

View File

@ -50,23 +50,7 @@ class Hyperbolic_traits_with_translations_2_adaptor
public:
typedef typename Predicate::result_type result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Predicate::operator();
#else
result_type operator()(const Point& p0, const Point& p1) const
{
return Predicate()(p0, p1);
}
result_type operator()(const Point& p0, const Point& p1, const Point& p2) const
{
return Predicate()(p0,p1,p2);
}
result_type operator()(const Point& p0, const Point& p1, const Point& p2, const Point& p3) const
{
return Predicate()(p0,p1,p2,p3);
}
#endif
Hyperbolic_traits_with_translations_2_adaptor(const Predicate_ pred = Predicate_()) : Predicate_(pred) {}
@ -127,14 +111,7 @@ private:
public:
typedef Point result_type;
#ifndef CGAL_CFG_MATCHING_BUG_6
using Construct_point_base::operator();
#else
Point operator()(const NT& x, const NT& y) const
{
return Construct_point_base()(x,y);
}
#endif
Periodic_4_construct_hyperbolic_point_2() { }

View File

@ -612,18 +612,6 @@ Uncertain<T> operator*(Uncertain<T> a, T b)
// enum_cast overload
#ifdef CGAL_CFG_MATCHING_BUG_5
template < typename T, typename U >
inline
Uncertain<T> enum_cast_bug(Uncertain<U> u, const T*)
{
return Uncertain<T>(static_cast<const T>(u.inf()),
static_cast<const T>(u.sup()));
}
#else
template < typename T, typename U >
inline
Uncertain<T> enum_cast(Uncertain<U> u)
@ -631,8 +619,6 @@ Uncertain<T> enum_cast(Uncertain<U> u)
return Uncertain<T>(static_cast<T>(u.inf()), static_cast<T>(u.sup()));
}
#endif
} //namespace CGAL
#endif // CGAL_UNCERTAIN_H

View File

@ -49,27 +49,7 @@ public:
traits(k)
{ }
#ifndef CGAL_CFG_MATCHING_BUG_6
using Base::operator();
#else // CGAL_CFG_MATCHING_BUG_6
typedef typename Kernel::Sphere_3 Sphere_3;
typedef typename Kernel::Circle_3 Circle_3;
result_type operator()(const Sphere_3& s) const
{ return this->Base::operator()(s); }
result_type operator()(const Circle_3& c) const
{ return this->Base::operator()(c); }
result_type operator()(const Point_3& p, const Point_3& q, const Point_3& r) const
{ return this->Base::operator()(p,q,r); }
result_type operator()(const Point_3& p, const Point_3& q) const
{ return this->Base::operator()(p,q); }
result_type operator()(const Point_3& p) const
{ return this->Base::operator()(p); }
#endif // CGAL_CFG_MATCHING_BUG_6
FT operator()(const Point_3& p,
const Point_3& q,