Fix compilation in periodic triangulations

This commit is contained in:
Mael Rouxel-Labbé 2025-03-16 14:25:04 +01:00
parent 8e0b7a5827
commit c5d51c4909
4 changed files with 82 additions and 111 deletions

View File

@ -42,8 +42,6 @@ class Functor_with_offset_weighted_points_adaptor_3
typedef typename Kernel::Construct_weighted_point_3 Construct_weighted_point_3;
public:
typedef typename Functor::result_type result_type;
Functor_with_offset_weighted_points_adaptor_3(const Functor_& functor,
const Construct_point_3& cp,
const Construct_weighted_point_3& wp)
@ -53,76 +51,76 @@ public:
// gives access to calls with Point_3 arguments and without offset
using Base::operator();
result_type operator() (const Weighted_point_3& p0, const Weighted_point_3& p1,
const Offset& o0, const Offset& o1) const {
decltype(auto) operator()(const Weighted_point_3& p0, const Weighted_point_3& p1,
const Offset& o0, const Offset& o1) const {
return operator()(wp(p0, o0), wp(p1, o1));
}
result_type operator() (const Weighted_point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2,
const Offset& o0, const Offset& o1,
const Offset& o2) const {
decltype(auto) operator()(const Weighted_point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2,
const Offset& o0, const Offset& o1,
const Offset& o2) const {
return operator()(wp(p0, o0), wp(p1, o1), wp(p2, o2));
}
result_type operator() (const Weighted_point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2, const Weighted_point_3& p3,
const Offset& o0, const Offset& o1,
const Offset& o2, const Offset& o3) const {
decltype(auto) operator()(const Weighted_point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2, const Weighted_point_3& p3,
const Offset& o0, const Offset& o1,
const Offset& o2, const Offset& o3) const {
return operator()(wp(p0, o0), wp(p1, o1), wp(p2, o2), wp(p3, o3));
}
result_type operator() (const Weighted_point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2, const Weighted_point_3& p3,
const Weighted_point_3& p4,
const Offset& o0, const Offset& o1,
const Offset& o2, const Offset& o3,
const Offset& o4) const {
decltype(auto) operator()(const Weighted_point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2, const Weighted_point_3& p3,
const Weighted_point_3& p4,
const Offset& o0, const Offset& o1,
const Offset& o2, const Offset& o3,
const Offset& o4) const {
return operator()(wp(p0, o0), wp(p1, o1), wp(p2, o2), wp(p3, o3), wp(p4, o4));
}
// for `Compare_power_distance_3`
result_type operator() (const Point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2,
const Offset& o0, const Offset& o1,
const Offset& o2) const {
decltype(auto) operator()(const Point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2,
const Offset& o0, const Offset& o1,
const Offset& o2) const {
return operator()(this->cp(p0, o0), wp(p1, o1), wp(p2, o2));
}
// for `Compare_weighted_squared_radius_3`
result_type operator() (const Weighted_point_3& p0, const Offset& o0,
const FT w) const {
decltype(auto) operator()(const Weighted_point_3& p0, const Offset& o0,
const FT w) const {
return operator()(wp(p0, o0), w);
}
result_type operator() (const Weighted_point_3& p0, const Weighted_point_3& p1,
const Offset& o0, const Offset& o1,
const FT w) const {
decltype(auto) operator()(const Weighted_point_3& p0, const Weighted_point_3& p1,
const Offset& o0, const Offset& o1,
const FT w) const {
return operator()(wp(p0, o0), wp(p1, o1), w);
}
result_type operator() (const Weighted_point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2,
const Offset& o0, const Offset& o1,
const Offset& o2,
const FT w) const {
decltype(auto) operator()(const Weighted_point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2,
const Offset& o0, const Offset& o1,
const Offset& o2,
const FT w) const {
return operator()(wp(p0, o0), wp(p1, o1), wp(p2, o2), w);
}
result_type operator() (const Weighted_point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2, const Weighted_point_3& p3,
const Offset& o0, const Offset& o1,
const Offset& o2, const Offset& o3,
const FT w) const {
decltype(auto) operator()(const Weighted_point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2, const Weighted_point_3& p3,
const Offset& o0, const Offset& o1,
const Offset& o2, const Offset& o3,
const FT w) const {
return operator()(wp(p0, o0), wp(p1, o1), wp(p2, o2), wp(p3, o3), w);
}
// for robust circumcenter_3
result_type operator()(const Weighted_point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2, const Weighted_point_3& p3,
const Offset& o0, const Offset& o1,
const Offset& o2, const Offset& o3,
bool b) const {
decltype(auto) operator()(const Weighted_point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2, const Weighted_point_3& p3,
const Offset& o0, const Offset& o1,
const Offset& o2, const Offset& o3,
bool b) const {
return operator()(wp(p0, o0), wp(p1, o1), wp(p2, o2), wp(p3, o3), b);
}

View File

@ -39,14 +39,6 @@ public:
using Base::operator();
template<typename F>
struct result : Base::template result<F> {};
template<typename F>
struct result<F(Point_3)> {
typedef const Point_3& type;
};
const Point_3& operator()(const Point_3& p) const { return p; }
};
@ -61,29 +53,27 @@ class Functor_with_point_offset_pair_adaptor
typedef typename Traits::Point_3 Point;
public:
typedef typename Functor::result_type result_type;
Functor_with_point_offset_pair_adaptor(const Functor & functor) : Functor_(functor) { }
public:
using Functor::operator();
result_type operator()(const Point& p0, const Point& p1) const {
decltype(auto) operator()(const Point& p0, const Point& p1) const {
return operator()(p0.first, p1.first,
p0.second, p1.second);
}
result_type operator()(const Point& p0, const Point& p1,
const Point& p2) const {
decltype(auto) operator()(const Point& p0, const Point& p1,
const Point& p2) const {
return operator()(p0.first, p1.first, p2.first,
p0.second, p1.second, p2.second);
}
result_type operator()(const Point& p0, const Point& p1,
const Point& p2, const Point& p3) const {
decltype(auto) operator()(const Point& p0, const Point& p1,
const Point& p2, const Point& p3) const {
return operator()(p0.first, p1.first, p2.first, p3.first,
p0.second, p1.second, p2.second, p3.second);
}
result_type operator()(const Point& p0, const Point& p1,
const Point& p2, const Point& p3, const Point& p4) const {
decltype(auto) operator()(const Point& p0, const Point& p1,
const Point& p2, const Point& p3, const Point& p4) const {
return operator()(p0.first, p1.first, p2.first, p3.first, p4.first,
p0.second, p1.second, p2.second, p3.second, p4.second);
}

View File

@ -49,14 +49,6 @@ public:
using Base::operator(); // for K::Weighted_point_3 to Point_3
template<typename F>
struct result : Base::template result<F> {};
template<typename F>
struct result<F(Weighted_point_3)> {
typedef Point_3 type;
};
Point_3 operator()(const Weighted_point_3& wp) const {
return std::make_pair(operator()(wp.first), wp.second /* offset */);
}
@ -75,8 +67,6 @@ class Functor_with_weighted_point_offset_pair_adaptor
typedef typename Traits::Weighted_point_3 Weighted_point_3;
public:
typedef typename Functor::result_type result_type;
Functor_with_weighted_point_offset_pair_adaptor (const Functor & functor)
: Functor_(functor)
{ }
@ -84,54 +74,54 @@ public:
public:
using Functor::operator();
result_type operator() (const Point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2) const
decltype(auto) operator()(const Point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2) const
{
return operator()(p0.first, p1.first, p2.first,
p0.second, p1.second, p2.second);
}
// bare points
result_type operator()(const Point_3& p0, const Point_3& p1) const {
decltype(auto) operator()(const Point_3& p0, const Point_3& p1) const {
return operator()(p0.first, p1.first,
p0.second, p1.second);
}
result_type operator()(const Point_3& p0, const Point_3& p1,
const Point_3& p2) const {
decltype(auto) operator()(const Point_3& p0, const Point_3& p1,
const Point_3& p2) const {
return operator()(p0.first, p1.first, p2.first,
p0.second, p1.second, p2.second);
}
result_type operator()(const Point_3& p0, const Point_3& p1,
const Point_3& p2, const Point_3& p3) const {
decltype(auto) operator()(const Point_3& p0, const Point_3& p1,
const Point_3& p2, const Point_3& p3) const {
return operator()(p0.first, p1.first, p2.first, p3.first,
p0.second, p1.second, p2.second, p3.second);
}
result_type operator()(const Point_3& p0, const Point_3& p1,
const Point_3& p2, const Point_3& p3, const Point_3& p4) const {
decltype(auto) operator()(const Point_3& p0, const Point_3& p1,
const Point_3& p2, const Point_3& p3, const Point_3& p4) const {
return operator()(p0.first, p1.first, p2.first, p3.first, p4.first,
p0.second, p1.second, p2.second, p3.second, p4.second);
}
// weighted points
result_type operator() (const Weighted_point_3& p0, const Weighted_point_3& p1) const
decltype(auto) operator()(const Weighted_point_3& p0, const Weighted_point_3& p1) const
{
return operator()(p0.first, p1.first, p0.second, p1.second);
}
result_type operator() (const Weighted_point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2) const
decltype(auto) operator()(const Weighted_point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2) const
{
return operator()(p0.first, p1.first, p2.first,
p0.second, p1.second, p2.second);
}
result_type operator() (const Weighted_point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2, const Weighted_point_3& p3) const
decltype(auto) operator()(const Weighted_point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2, const Weighted_point_3& p3) const
{
return operator()(p0.first, p1.first, p2.first, p3.first,
p0.second, p1.second, p2.second, p3.second);
}
result_type operator() (const Weighted_point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2, const Weighted_point_3& p3,
const Weighted_point_3& p4) const
decltype(auto) operator()(const Weighted_point_3& p0, const Weighted_point_3& p1,
const Weighted_point_3& p2, const Weighted_point_3& p3,
const Weighted_point_3& p4) const
{
return operator()(p0.first, p1.first, p2.first, p3.first, p4.first,
p0.second, p1.second, p2.second, p3.second, p4.second);

View File

@ -48,45 +48,43 @@ class Hyperbolic_traits_with_translations_2_adaptor
typedef typename Kernel::Construct_hyperbolic_point_2 Construct_hyperbolic_point_2;
public:
typedef typename Predicate::result_type result_type;
using Predicate::operator();
Hyperbolic_traits_with_translations_2_adaptor(const Predicate_ pred = Predicate_()) : Predicate_(pred) {}
result_type operator()(const Point& p0, const Point& p1,
const Hyperbolic_translation& o0, const Hyperbolic_translation& o1) const
decltype(auto) operator()(const Point& p0, const Point& p1,
const Hyperbolic_translation& o0, const Hyperbolic_translation& o1) const
{
return operator()(pp(p0, o0), pp(p1, o1));
}
result_type operator()(const Point& p0, const Point& p1, const Point& p2,
const Hyperbolic_translation& o0, const Hyperbolic_translation& o1, const Hyperbolic_translation& o2) const
decltype(auto) operator()(const Point& p0, const Point& p1, const Point& p2,
const Hyperbolic_translation& o0, const Hyperbolic_translation& o1, const Hyperbolic_translation& o2) const
{
return operator()(pp(p0, o0), pp(p1, o1), pp(p2, o2));
}
result_type operator()(const Point& p0, const Point& p1,
const Point& p2, const Point& p3,
const Hyperbolic_translation& o0, const Hyperbolic_translation& o1,
const Hyperbolic_translation& o2, const Hyperbolic_translation& o3) const
decltype(auto) operator()(const Point& p0, const Point& p1,
const Point& p2, const Point& p3,
const Hyperbolic_translation& o0, const Hyperbolic_translation& o1,
const Hyperbolic_translation& o2, const Hyperbolic_translation& o3) const
{
return operator()(pp(p0, o0), pp(p1, o1), pp(p2, o2), pp(p3, o3));
}
// Added for Side_of_hyperbolic_triangle_2
template <typename T>
result_type operator()(const Point& p0, const Point& p1,
const Point& p2, const Point& p3, T& t) const
decltype(auto) operator()(const Point& p0, const Point& p1,
const Point& p2, const Point& p3, T& t) const
{
return operator()(p0, p1, p2, p3, t);
}
template <typename T>
result_type operator()(const Point& p0, const Point& p1,
const Point& p2, const Point& p3,
const Hyperbolic_translation& o0, const Hyperbolic_translation& o1,
const Hyperbolic_translation& o2, const Hyperbolic_translation& o3, T& t) const
decltype(auto) operator()(const Point& p0, const Point& p1,
const Point& p2, const Point& p3,
const Hyperbolic_translation& o0, const Hyperbolic_translation& o1,
const Hyperbolic_translation& o2, const Hyperbolic_translation& o3, T& t) const
{
return operator()(pp(p0, o0), pp(p1, o1), pp(p2, o2), pp(p3, o3), t);
}
@ -109,8 +107,6 @@ private:
typedef typename Kernel::Hyperbolic_translation Hyperbolic_translation;
public:
typedef Point result_type;
using Construct_point_base::operator();
Periodic_4_construct_hyperbolic_point_2() { }
@ -165,14 +161,13 @@ class Compute_approximate_hyperbolic_diameter
typedef typename Traits:: Euclidean_line_2 Euclidean_line_2;
typedef typename Traits::Circle_2 Circle_2;
typedef typename Traits::Hyperbolic_point_2 Hyperbolic_point_2;
public:
typedef double result_type;
public:
Compute_approximate_hyperbolic_diameter(const Traits& gt = Traits()) : _gt(gt) {}
result_type operator()(const Hyperbolic_point_2& p1,
const Hyperbolic_point_2& p2,
const Hyperbolic_point_2& p3)
double operator()(const Hyperbolic_point_2& p1,
const Hyperbolic_point_2& p2,
const Hyperbolic_point_2& p3)
{
Circle_2 c = _gt.construct_circle_2_object()(p1, p2, p3);
@ -443,8 +438,6 @@ class Compute_approximate_hyperbolic_diameter
public:
Construct_inexact_hyperbolic_circumcenter_2(const Traits& gt = Traits()) : _gt(gt) {}
typedef Hyperbolic_Voronoi_point_2 result_type;
Hyperbolic_Voronoi_point_2 operator()(const Hyperbolic_point_2& p,
const Hyperbolic_point_2& q,
const Hyperbolic_point_2& r)