From 07da1cef239de905b7c1a2e0378efad631a2d5e5 Mon Sep 17 00:00:00 2001
From: Marco Clemencic <marco.clemencic@cern.ch>
Date: Mon, 30 Sep 2024 10:34:50 +0200
Subject: [PATCH] Use C++20 when building with gcc>=13 or clang>=16

---
 cmake/Modules/LHCbSettings.cmake | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/cmake/Modules/LHCbSettings.cmake b/cmake/Modules/LHCbSettings.cmake
index b156427620..d182604847 100644
--- a/cmake/Modules/LHCbSettings.cmake
+++ b/cmake/Modules/LHCbSettings.cmake
@@ -1,5 +1,5 @@
 ###############################################################################
-# (c) Copyright 2021 CERN for the benefit of the LHCb Collaboration           #
+# (c) Copyright 2021-2024 CERN for the benefit of the LHCb Collaboration      #
 #                                                                             #
 # This software is distributed under the terms of the GNU General Public      #
 # Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING".   #
@@ -19,7 +19,13 @@ find_data_package(Geant4Files ${Geant4_VERSION_MAJOR}${Geant4_VERSION_MINOR}.0)
 
 
 # FIXME: this should match the version used by ROOT (LCG version + compiler version)
-set(GEANT4_BUILD_CXXSTD 17 CACHE STRING "C++ Standard")
+if( (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "13.0")
+    OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "16.0") )
+    set(LHCB_DEFAULT_CXXSTD 17)
+else()
+    set(LHCB_DEFAULT_CXXSTD 20)
+endif()
+set(GEANT4_BUILD_CXXSTD ${LHCB_DEFAULT_CXXSTD} CACHE STRING "C++ Standard")
 
 set(OpenGL_GL_PREFERENCE "GLVND" CACHE STRING
     "Preferred GL library to use (see https://cmake.org/cmake/help/v3.12/policy/CMP0072.html)")
-- 
GitLab