Browse Source

Add C++ 23 detection

christophe 1 month ago
parent
commit
9ecd2c0849
1 changed files with 14 additions and 4 deletions
  1. 14 4
      glm/detail/setup.hpp

+ 14 - 4
glm/detail/setup.hpp

@@ -69,8 +69,9 @@
 #define GLM_LANG_CXX14_FLAG			(1 << 5)
 #define GLM_LANG_CXX17_FLAG			(1 << 6)
 #define GLM_LANG_CXX20_FLAG			(1 << 7)
-#define GLM_LANG_CXXMS_FLAG			(1 << 8)
-#define GLM_LANG_CXXGNU_FLAG		(1 << 9)
+#define GLM_LANG_CXX23_FLAG			(1 << 8)
+#define GLM_LANG_CXXMS_FLAG			(1 << 9)
+#define GLM_LANG_CXXGNU_FLAG		(1 << 10)
 
 #define GLM_LANG_CXX98			GLM_LANG_CXX98_FLAG
 #define GLM_LANG_CXX03			(GLM_LANG_CXX98 | GLM_LANG_CXX03_FLAG)
@@ -79,6 +80,7 @@
 #define GLM_LANG_CXX14			(GLM_LANG_CXX11 | GLM_LANG_CXX14_FLAG)
 #define GLM_LANG_CXX17			(GLM_LANG_CXX14 | GLM_LANG_CXX17_FLAG)
 #define GLM_LANG_CXX20			(GLM_LANG_CXX17 | GLM_LANG_CXX20_FLAG)
+#define GLM_LANG_CXX23			(GLM_LANG_CXX20 | GLM_LANG_CXX23_FLAG)
 #define GLM_LANG_CXXMS			GLM_LANG_CXXMS_FLAG
 #define GLM_LANG_CXXGNU			GLM_LANG_CXXGNU_FLAG
 
@@ -113,7 +115,11 @@
 #		define GLM_LANG_PLATFORM 0
 #	endif
 
-#	if __cplusplus > 201703L || GLM_LANG_PLATFORM > 201703L
+#	if __cplusplus > 202302L || GLM_LANG_PLATFORM > 202302L
+#		define GLM_LANG (GLM_LANG_CXX23 | GLM_LANG_EXT)
+#	elif __cplusplus == 202302L || GLM_LANG_PLATFORM == 202302L
+#		define GLM_LANG (GLM_LANG_CXX23 | GLM_LANG_EXT)
+#	elif __cplusplus == 202002L || GLM_LANG_PLATFORM == 202002L
 #		define GLM_LANG (GLM_LANG_CXX20 | GLM_LANG_EXT)
 #	elif __cplusplus == 201703L || GLM_LANG_PLATFORM == 201703L
 #		define GLM_LANG (GLM_LANG_CXX17 | GLM_LANG_EXT)
@@ -625,7 +631,11 @@ namespace detail
 #		pragma message ("GLM: version " GLM_STR(GLM_VERSION_MAJOR) "." GLM_STR(GLM_VERSION_MINOR) "." GLM_STR(GLM_VERSION_PATCH))
 
 	// Report C++ language
-#	if (GLM_LANG & GLM_LANG_CXX20_FLAG) && (GLM_LANG & GLM_LANG_EXT)
+#	if (GLM_LANG & GLM_LANG_CXX23_FLAG) && (GLM_LANG & GLM_LANG_EXT)
+#		pragma message("GLM: C++ 23 with extensions")
+#	elif (GLM_LANG & GLM_LANG_CXX23_FLAG)
+#		pragma message("GLM: C++ 23")
+#	elif (GLM_LANG & GLM_LANG_CXX20_FLAG) && (GLM_LANG & GLM_LANG_EXT)
 #		pragma message("GLM: C++ 20 with extensions")
 #	elif (GLM_LANG & GLM_LANG_CXX20_FLAG)
 #		pragma message("GLM: C++ 20")