From e64d93ffdb7b5f211c283beaef07b8feea6e9619 Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@esi-group.com>
Date: Mon, 16 Dec 2024 10:42:59 +0100
Subject: [PATCH] COMP: support compilation with CGAL-6.0 (#3234)

- CGAL-6 uses c++17 std::optional, std::variant instead of boost versions
---
 .../viewFactorsGen/viewFactorsGen.C             |  8 +++++++-
 .../surfaceBooleanFeatures.C                    | 17 ++++++++++++++++-
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/applications/utilities/preProcessing/viewFactorsGen/viewFactorsGen.C b/applications/utilities/preProcessing/viewFactorsGen/viewFactorsGen.C
index 9e9c3d34409..a13eac5fea9 100644
--- a/applications/utilities/preProcessing/viewFactorsGen/viewFactorsGen.C
+++ b/applications/utilities/preProcessing/viewFactorsGen/viewFactorsGen.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
-    Copyright (C) 2016-2022 OpenCFD Ltd.
+    Copyright (C) 2016-2024 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -119,7 +119,13 @@ typedef std::vector<Triangle>::iterator Iterator;
 typedef CGAL::AABB_triangle_primitive<K, Iterator> Primitive;
 typedef CGAL::AABB_traits<K, Primitive> AABB_triangle_traits;
 typedef CGAL::AABB_tree<AABB_triangle_traits> Tree;
+
+// Used boost::optional prior to CGAL-6.0
+#if (CGAL_VERSION_NR < 1060000910)
 typedef boost::optional
+#else
+typedef std::optional
+#endif
 <
     Tree::Intersection_and_primitive_id<Segment>::Type
 > Segment_intersection;
diff --git a/applications/utilities/surface/surfaceBooleanFeatures/surfaceBooleanFeatures.C b/applications/utilities/surface/surfaceBooleanFeatures/surfaceBooleanFeatures.C
index b7f2715b253..009ce430eb0 100644
--- a/applications/utilities/surface/surfaceBooleanFeatures/surfaceBooleanFeatures.C
+++ b/applications/utilities/surface/surfaceBooleanFeatures/surfaceBooleanFeatures.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
-    Copyright (C) 2016-2022 OpenCFD Ltd.
+    Copyright (C) 2016-2024 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -108,7 +108,12 @@ typedef CGAL::AABB_face_graph_triangle_primitive
 typedef CGAL::AABB_traits<K, Primitive> Traits;
 typedef CGAL::AABB_tree<Traits> Tree;
 
+// Used boost::optional prior to CGAL-6.0
+#if (CGAL_VERSION_NR < 1060000910)
 typedef boost::optional
+#else
+typedef std::optional
+#endif
 <
     Tree::Intersection_and_primitive_id<Segment>::Type
 > Segment_intersection;
@@ -647,7 +652,12 @@ labelPair edgeIntersectionsCGAL
             // Get intersection object
             if
             (
+                // Used boost::variant prior to CGAL-6.0
+                #if (CGAL_VERSION_NR < 1060000910)
                 const Point* ptPtr = boost::get<Point>(&(intersect->first))
+                #else
+                const Point* ptPtr = std::get_if<Point>(&(intersect->first))
+                #endif
             )
             {
                 point pt
@@ -679,7 +689,12 @@ labelPair edgeIntersectionsCGAL
             }
             else if
             (
+                // Used boost::variant prior to CGAL-6.0
+                #if (CGAL_VERSION_NR < 1060000910)
                 const Segment* sPtr = boost::get<Segment>(&(intersect->first))
+                #else
+                const Segment* sPtr = std::get_if<Segment>(&(intersect->first))
+                #endif
             )
             {
                 #if defined (CGAL_VERSION_NR) && (CGAL_VERSION_NR < 1041400000)
-- 
GitLab