Merge branch 'releases/CGAL-4.14-branch' into releases/CGAL-5.0-branch

This commit is contained in:
Laurent Rineau 2020-07-21 15:25:54 +02:00
commit 2e8a59d570
8 changed files with 68 additions and 5 deletions

View File

@ -171,9 +171,11 @@ class AABB_tree;
/// \sa `AABBPrimitiveWithSharedData` /// \sa `AABBPrimitiveWithSharedData`
template<typename GeomTraits, typename AABBPrimitive, typename BboxMap = Default> template<typename GeomTraits, typename AABBPrimitive, typename BboxMap = Default>
class AABB_traits: class AABB_traits
public internal::AABB_tree::AABB_traits_base<AABBPrimitive>, #ifndef DOXYGEN_RUNNING
: public internal::AABB_tree::AABB_traits_base<AABBPrimitive>,
public internal::AABB_tree::AABB_traits_base_2<GeomTraits> public internal::AABB_tree::AABB_traits_base_2<GeomTraits>
#endif
{ {
typedef typename CGAL::Object Object; typedef typename CGAL::Object Object;
public: public:

View File

@ -16,6 +16,9 @@ if(NOT POLICY CMP0064)
# Add a fake function to avoid CMake errors # Add a fake function to avoid CMake errors
function(cgal_add_compilation_test) function(cgal_add_compilation_test)
endfunction() endfunction()
# Add a fake function to avoid CMake errors
function(cgal_setup_test_properties)
endfunction()
# Then return, to exit the file # Then return, to exit the file
return() return()
@ -213,7 +216,7 @@ function(cgal_setup_test_properties test_name)
PROPERTY PROPERTY
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/__exec_test_dir) WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/__exec_test_dir)
endif() endif()
set_property(TEST "${test_name}" set_property(TEST "${test_name}"
APPEND PROPERTY FIXTURES_REQUIRED "${PROJECT_NAME}") APPEND PROPERTY FIXTURES_REQUIRED "${PROJECT_NAME}")
if(exe_name) if(exe_name)

View File

@ -551,7 +551,7 @@ using std::max;
#define CGAL_NORETURN [[noreturn]] #define CGAL_NORETURN [[noreturn]]
// Macro to specify [[no_unique_address]] if supported // Macro to specify [[no_unique_address]] if supported
#if __has_cpp_attribute(no_unique_address) #if CGAL_CXX11 && __has_cpp_attribute(no_unique_address)
# define CGAL_NO_UNIQUE_ADDRESS [[no_unique_address]] # define CGAL_NO_UNIQUE_ADDRESS [[no_unique_address]]
#else #else
# define CGAL_NO_UNIQUE_ADDRESS # define CGAL_NO_UNIQUE_ADDRESS

View File

@ -79,6 +79,15 @@ public:
: p1(pp1), p2(pp2), cmp(c) : p1(pp1), p2(pp2), cmp(c)
{ } { }
template <typename F>
struct result;
template <typename F, typename A1>
struct result<F(A1)> {
typedef typename Pairify<typename CGAL::cpp11::result_of<P1(const A1&)>::type,
typename CGAL::cpp11::result_of<P2(const A1&)>::type>::result_type type;
};
template <class A1> template <class A1>
typename Pairify<typename CGAL::cpp11::result_of<P1(const A1&)>::type, typename Pairify<typename CGAL::cpp11::result_of<P1(const A1&)>::type,
typename CGAL::cpp11::result_of<P2(const A1&)>::type>::result_type typename CGAL::cpp11::result_of<P2(const A1&)>::type>::result_type
@ -104,6 +113,12 @@ public:
return Pairify<result_type_1, result_type_2>()(res1, res2); return Pairify<result_type_1, result_type_2>()(res1, res2);
} }
template <typename F, typename A1, typename A2>
struct result<F(A1, A2)> {
typedef typename Pairify<typename CGAL::cpp11::result_of<P1(const A1&, const A2&)>::type,
typename CGAL::cpp11::result_of<P2(const A1&, const A2&)>::type>::result_type type;
};
template <class A1, class A2> template <class A1, class A2>
typename Pairify<typename CGAL::cpp11::result_of<P1(const A1&, const A2&)>::type, typename Pairify<typename CGAL::cpp11::result_of<P1(const A1&, const A2&)>::type,
typename CGAL::cpp11::result_of<P2(const A1&, const A2&)>::type>::result_type typename CGAL::cpp11::result_of<P2(const A1&, const A2&)>::type>::result_type
@ -131,6 +146,12 @@ public:
return Pairify<result_type_1, result_type_2>()(res1, res2); return Pairify<result_type_1, result_type_2>()(res1, res2);
} }
template <typename F, typename A1, typename A2, typename A3>
struct result<F(A1, A2, A3)> {
typedef typename Pairify<typename CGAL::cpp11::result_of<P1(const A1&, const A2&, const A3&)>::type,
typename CGAL::cpp11::result_of<P2(const A1&, const A2&, const A3&)>::type>::result_type type;
};
template <class A1, class A2, class A3> template <class A1, class A2, class A3>
typename Pairify<typename CGAL::cpp11::result_of<P1( typename Pairify<typename CGAL::cpp11::result_of<P1(
const A1&, const A2&, const A3&)>::type, const A1&, const A2&, const A3&)>::type,
@ -162,6 +183,16 @@ public:
return Pairify<result_type_1, result_type_2>()(res1, res2); return Pairify<result_type_1, result_type_2>()(res1, res2);
} }
template <typename F, typename A1, typename A2, typename A3, typename A4>
struct result<F(A1, A2, A3, A4)> {
typedef
typename Pairify<typename CGAL::cpp11::result_of<P1(
const A1&, const A2&, const A3&, const A4&)>::type,
typename CGAL::cpp11::result_of<P2(
const A1&, const A2&, const A3&, const A4&)>::type>::result_type
type;
};
template <class A1, class A2, class A3, class A4> template <class A1, class A2, class A3, class A4>
typename Pairify<typename CGAL::cpp11::result_of<P1( typename Pairify<typename CGAL::cpp11::result_of<P1(
const A1&, const A2&, const A3&, const A4&)>::type, const A1&, const A2&, const A3&, const A4&)>::type,
@ -198,6 +229,16 @@ public:
return Pairify<result_type_1, result_type_2>()(res1, res2); return Pairify<result_type_1, result_type_2>()(res1, res2);
} }
template <typename F, typename A1, typename A2, typename A3, typename A4, typename A5>
struct result<F(A1, A2, A3, A4, A5)> {
typedef
typename Pairify<typename CGAL::cpp11::result_of<P1(
const A1&, const A2&, const A3&, const A4&, const A5&)>::type,
typename CGAL::cpp11::result_of<P2(
const A1&, const A2&, const A3&, const A4&, const A5&)>::type>::result_type
type;
};
template <class A1, class A2, class A3, class A4, class A5> template <class A1, class A2, class A3, class A4, class A5>
typename Pairify<typename CGAL::cpp11::result_of<P1( typename Pairify<typename CGAL::cpp11::result_of<P1(
const A1&, const A2&, const A3&, const A4&, const A5&)>::type, const A1&, const A2&, const A3&, const A4&, const A5&)>::type,

View File

@ -113,6 +113,7 @@ template <class Circulator>
class Construct_circulator_2 class Construct_circulator_2
{ {
public: public:
typedef Circulator result_type;
Circulator operator()(Circulator p1) const { return p1; } Circulator operator()(Circulator p1) const { return p1; }
}; };

View File

@ -40,6 +40,14 @@ public:
using Base::operator(); 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; } const Point_3& operator()(const Point_3& p) const { return p; }
}; };

View File

@ -49,6 +49,14 @@ public:
using Base::operator(); // for K::Weighted_point_3 to Point_3 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 { Point_3 operator()(const Weighted_point_3& wp) const {
return std::make_pair(operator()(wp.first), wp.second /* offset */); return std::make_pair(operator()(wp.first), wp.second /* offset */);
} }

View File

@ -567,7 +567,7 @@ protected:
public: public:
template<typename P> // Point or Point_3 template<typename P> // Point or Point_3
typename boost::result_of<const Construct_point_3(const P&)>::type typename boost::result_of<Construct_point_3(P)>::type
construct_point(const P& p) const construct_point(const P& p) const
{ {
return geom_traits().construct_point_3_object()(p); return geom_traits().construct_point_3_object()(p);