Skip to content

Commit 45a02a7

Browse files
rolandreichweinbmwJohn Wellbelove
authored andcommitted
Add C++23 detection (#1109)
1 parent 8d2b2a4 commit 45a02a7

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

include/etl/profiles/determine_compiler_language_support.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,19 @@ SOFTWARE.
3737

3838
// Determine C++23 support
3939
#if !defined(ETL_CPP23_SUPPORTED)
40-
#define ETL_CPP23_SUPPORTED 0
40+
#if defined(__cplusplus)
41+
#if defined(ETL_COMPILER_MICROSOFT)
42+
#define ETL_CPP23_SUPPORTED (__cplusplus >= 202302L)
43+
#elif defined(ETL_COMPILER_ARM5)
44+
#define ETL_CPP23_SUPPORTED 0
45+
#elif defined(ETL_COMPILER_GCC)
46+
#define ETL_CPP23_SUPPORTED (__cplusplus >= 202302L)
47+
#else
48+
#define ETL_CPP23_SUPPORTED (__cplusplus >= 202302L)
49+
#endif
50+
#else
51+
#define ETL_CPP23_SUPPORTED 0
52+
#endif
4153
#endif
4254

4355
#if ETL_CPP23_SUPPORTED

test/test_etl_traits.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ namespace
4747
CHECK_EQUAL((ETL_USING_CPP14 == 1), etl::traits::using_cpp14);
4848
CHECK_EQUAL((ETL_USING_CPP17 == 1), etl::traits::using_cpp17);
4949
CHECK_EQUAL((ETL_USING_CPP20 == 1), etl::traits::using_cpp20);
50+
CHECK_EQUAL((ETL_USING_CPP23 == 1), etl::traits::using_cpp23);
5051
CHECK_EQUAL((ETL_USING_EXCEPTIONS == 1), etl::traits::using_exceptions);
5152
CHECK_EQUAL((ETL_USING_GCC_COMPILER == 1), etl::traits::using_gcc_compiler);
5253
CHECK_EQUAL((ETL_USING_MICROSOFT_COMPILER == 1), etl::traits::using_microsoft_compiler);
@@ -85,7 +86,9 @@ namespace
8586
CHECK_EQUAL(ETL_VERSION_MINOR, etl::traits::version_minor);
8687
CHECK_EQUAL(ETL_VERSION_PATCH, etl::traits::version_patch);
8788
CHECK_EQUAL(ETL_VERSION_VALUE, etl::traits::version);
88-
#if ETL_USING_CPP20
89+
#if ETL_USING_CPP23
90+
CHECK_EQUAL(23, etl::traits::language_standard);
91+
#elif ETL_USING_CPP20
8992
CHECK_EQUAL(20, etl::traits::language_standard);
9093
#elif ETL_USING_CPP17
9194
CHECK_EQUAL(17, etl::traits::language_standard);

0 commit comments

Comments
 (0)