diff --git a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Functor_with_offset_weighted_points_adaptor_3.h b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Functor_with_offset_weighted_points_adaptor_3.h index 19b9e657f48..91838f0f4b6 100644 --- a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Functor_with_offset_weighted_points_adaptor_3.h +++ b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Functor_with_offset_weighted_points_adaptor_3.h @@ -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); } diff --git a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_Delaunay_triangulation_remove_traits_3.h b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_Delaunay_triangulation_remove_traits_3.h index 128cb4038d0..667ae76bc43 100644 --- a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_Delaunay_triangulation_remove_traits_3.h +++ b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_Delaunay_triangulation_remove_traits_3.h @@ -39,14 +39,6 @@ public: using Base::operator(); - template - struct result : Base::template result {}; - - template - struct result { - 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); } diff --git a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_regular_triangulation_remove_traits_3.h b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_regular_triangulation_remove_traits_3.h index 41fdaa532c0..daaf6425672 100644 --- a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_regular_triangulation_remove_traits_3.h +++ b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_regular_triangulation_remove_traits_3.h @@ -49,14 +49,6 @@ public: using Base::operator(); // for K::Weighted_point_3 to Point_3 - template - struct result : Base::template result {}; - - template - struct result { - 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); diff --git a/Periodic_4_hyperbolic_triangulation_2/include/CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_traits_2.h b/Periodic_4_hyperbolic_triangulation_2/include/CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_traits_2.h index 9c89cc574d0..0abb4fbabb5 100644 --- a/Periodic_4_hyperbolic_triangulation_2/include/CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_traits_2.h +++ b/Periodic_4_hyperbolic_triangulation_2/include/CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_traits_2.h @@ -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 - 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 - 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)