diff --git a/CMakeLists.txt b/CMakeLists.txt index 7f80a1ca2f..f447abe60d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,8 +10,15 @@ if (NOT PHASAR_IN_TREE) set(CMAKE_PROJECT_NAME "phasar") endif () +option(PHASAR_EXPERIMENTAL_CXX20 "Build phasar in C++20 mode. THis is an experimental feature" OFF) + set(CMAKE_EXPORT_COMPILE_COMMANDS YES) -set(CMAKE_CXX_STANDARD 17) +if(PHASAR_EXPERIMENTAL_CXX20) + message(STATUS "Selected experimental C++ build") + set(CMAKE_CXX_STANDARD 20) +else() + set(CMAKE_CXX_STANDARD 17) +endif() set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) diff --git a/include/phasar/DataFlow/IfdsIde/EdgeFunction.h b/include/phasar/DataFlow/IfdsIde/EdgeFunction.h index e872c23fb8..064e21575c 100644 --- a/include/phasar/DataFlow/IfdsIde/EdgeFunction.h +++ b/include/phasar/DataFlow/IfdsIde/EdgeFunction.h @@ -222,10 +222,8 @@ class [[clang::trivial_abi]] EdgeFunction final : EdgeFunctionBase { /// Implicit-conversion constructor from EdgeFunctionRef. Increments the /// ref-count if not small-object optimized - template > && - IsEdgeFunction>> + template >>> EdgeFunction(EdgeFunctionRef CEF) noexcept : EdgeFunction(CEF.Instance, {&VTableFor, [CEF] {