From efdf503e2cf45d2a04b9c80b88fa8b022aaf21b4 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Mon, 29 Apr 2024 16:38:51 +0100 Subject: [PATCH] Kernel_23: Fix Issue 8140 --- Filtered_kernel/include/CGAL/Lazy_kernel.h | 6 ++++++ Kernel_23/test/Kernel_23/CMakeLists.txt | 1 + Kernel_23/test/Kernel_23/issue_8140.cpp | 12 ++++++++++++ 3 files changed, 19 insertions(+) create mode 100644 Kernel_23/test/Kernel_23/issue_8140.cpp diff --git a/Filtered_kernel/include/CGAL/Lazy_kernel.h b/Filtered_kernel/include/CGAL/Lazy_kernel.h index 8f43a8a1af1..a6b2ac165ba 100644 --- a/Filtered_kernel/include/CGAL/Lazy_kernel.h +++ b/Filtered_kernel/include/CGAL/Lazy_kernel.h @@ -280,12 +280,18 @@ public: C Cf() const { return C(); } #include + + // Useless meta-function, added to workaround a bug with Visual C++ 2022 and before + // See issue https://github.com/CGAL/cgal/issues/8140 + template < typename T > + struct Handle { typedef T type; }; }; + template < typename EK_, typename AK_, typename E2A_, typename Kernel_ > class Lazy_kernel_base : public Lazy_kernel_generic_base diff --git a/Kernel_23/test/Kernel_23/CMakeLists.txt b/Kernel_23/test/Kernel_23/CMakeLists.txt index 1de74e0e1b0..740f9325814 100644 --- a/Kernel_23/test/Kernel_23/CMakeLists.txt +++ b/Kernel_23/test/Kernel_23/CMakeLists.txt @@ -14,6 +14,7 @@ create_single_source_cgal_program("Filtered_homogeneous.cpp") create_single_source_cgal_program("Homogeneous.cpp") create_single_source_cgal_program("issue_129.cpp") create_single_source_cgal_program("issue_3301.cpp") +create_single_source_cgal_program("issue_8140.cpp") create_single_source_cgal_program("Kernel_checker.cpp") create_single_source_cgal_program("Lazy_kernel.cpp") create_single_source_cgal_program("origin_3.cpp") diff --git a/Kernel_23/test/Kernel_23/issue_8140.cpp b/Kernel_23/test/Kernel_23/issue_8140.cpp new file mode 100644 index 00000000000..3628ba83944 --- /dev/null +++ b/Kernel_23/test/Kernel_23/issue_8140.cpp @@ -0,0 +1,12 @@ +#include + +int main() { // For testing, we just print the combinations of types + using Kernel = CGAL::Exact_predicates_exact_constructions_kernel; + using Vec_3 = Kernel::Vector_3; + using Cp_fnc3 = Vec_3(*)(const Vec_3&, const Vec_3&); + + Cp_fnc3 f = static_cast(&CGAL::cross_product); + Vec_3 v1, v2; + Vec_3 v = f(v1, v2); + return 0; +}