Pārlūkot izejas kodu

Merge topic 'msvc-c++23' into release-4.0

b3f1c60aff MSVC: Use -std:c++23preview flag for C++23 when available
1b4a802413 MSVC: Split C++23 flag selection into dedicated block

Acked-by: Kitware Robot <[email protected]>
Merge-request: !10462
Brad King 7 mēneši atpakaļ
vecāks
revīzija
5cfb301524

+ 11 - 3
Modules/Compiler/MSVC-CXX.cmake

@@ -35,15 +35,23 @@ if ((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0.24215.1 AND
   if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.29.30129)
     set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std:c++20")
     set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std:c++20")
-    set(CMAKE_CXX23_STANDARD_COMPILE_OPTION "-std:c++latest")
-    set(CMAKE_CXX23_EXTENSION_COMPILE_OPTION "-std:c++latest")
-    set(CMAKE_CXX_STANDARD_LATEST 23)
+    set(CMAKE_CXX_STANDARD_LATEST 20)
   elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.12.25835)
     set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std:c++latest")
     set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std:c++latest")
     set(CMAKE_CXX_STANDARD_LATEST 20)
   endif()
 
+  if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.43.34808)
+    set(CMAKE_CXX23_STANDARD_COMPILE_OPTION "-std:c++23preview")
+    set(CMAKE_CXX23_EXTENSION_COMPILE_OPTION "-std:c++23preview")
+    set(CMAKE_CXX_STANDARD_LATEST 23)
+  elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.29.30129)
+    set(CMAKE_CXX23_STANDARD_COMPILE_OPTION "-std:c++latest")
+    set(CMAKE_CXX23_EXTENSION_COMPILE_OPTION "-std:c++latest")
+    set(CMAKE_CXX_STANDARD_LATEST 23)
+  endif()
+
   __compiler_check_default_language_standard(CXX 19.0 14)
 
 elseif (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0)

+ 7 - 0
Templates/MSBuild/FlagTables/v143_CL.json

@@ -496,6 +496,13 @@
     "value": "stdcpp20",
     "flags": []
   },
+  {
+    "name": "LanguageStandard",
+    "switch": "std:c++23preview",
+    "comment": "Preview - ISO C++23 Standard",
+    "value": "stdcpp23",
+    "flags": []
+  },
   {
     "name": "LanguageStandard",
     "switch": "std:c++latest",