From 14d58c50d1fed56781594ca3459d7c3a23e3d327 Mon Sep 17 00:00:00 2001 From: Frederick Roy Date: Thu, 19 Mar 2026 09:29:35 +0900 Subject: [PATCH 1/2] add a consteval check if trying to use the compile-time-string version of advancedtimer --- .../Helper/src/sofa/helper/ScopedAdvancedTimer.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Sofa/framework/Helper/src/sofa/helper/ScopedAdvancedTimer.h b/Sofa/framework/Helper/src/sofa/helper/ScopedAdvancedTimer.h index 29a531fa644..93300cb9ef9 100644 --- a/Sofa/framework/Helper/src/sofa/helper/ScopedAdvancedTimer.h +++ b/Sofa/framework/Helper/src/sofa/helper/ScopedAdvancedTimer.h @@ -84,7 +84,12 @@ ScopedAdvancedTimer::ScopedAdvancedTimer(const char* message, T* obj) #define SCOPED_TIMER_VARNAME_AD(varname, name) #endif -#define SCOPED_TIMER(name) SCOPED_TIMER_TR(name); SCOPED_TIMER_AD(name) +#define ENSURE_SCOPED_ADVANCED_TIMER_ARG_IS_CONSTEXPR(s) ([](const char* ensure_name_must_be_a_compile_time_string_literal) \ + consteval -> const char* { \ + return ensure_name_must_be_a_compile_time_string_literal; \ + })(s) + +#define SCOPED_TIMER(name) ENSURE_SCOPED_ADVANCED_TIMER_ARG_IS_CONSTEXPR(name) ; SCOPED_TIMER_TR(name); SCOPED_TIMER_AD(name) #define SCOPED_TIMER_DYN(name) SCOPED_TIMER_DYN_TR(name); SCOPED_TIMER_AD(name) -#define SCOPED_TIMER_VARNAME(varname, name) SCOPED_TIMER_VARNAME_TR(varname, name); SCOPED_TIMER_VARNAME_AD(varname, name) +#define SCOPED_TIMER_VARNAME(varname, name) ENSURE_SCOPED_ADVANCED_TIMER_ARG_IS_CONSTEXPR(name) ; SCOPED_TIMER_VARNAME_TR(varname, name); SCOPED_TIMER_VARNAME_AD(varname, name) #define SCOPED_TIMER_VARNAME_DYN(varname, name) SCOPED_TIMER_VARNAME_DYN_TR(varname, name); SCOPED_TIMER_VARNAME_AD(varname, name) From e271923ec1c05ddee59da183218d2a43bbba81fe Mon Sep 17 00:00:00 2001 From: Frederick Roy Date: Thu, 19 Mar 2026 10:31:21 +0900 Subject: [PATCH 2/2] replace lambda with function (consteval lambda needs updated compilers) --- Sofa/framework/Helper/src/sofa/helper/ScopedAdvancedTimer.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Sofa/framework/Helper/src/sofa/helper/ScopedAdvancedTimer.h b/Sofa/framework/Helper/src/sofa/helper/ScopedAdvancedTimer.h index 93300cb9ef9..6fd1c97e6de 100644 --- a/Sofa/framework/Helper/src/sofa/helper/ScopedAdvancedTimer.h +++ b/Sofa/framework/Helper/src/sofa/helper/ScopedAdvancedTimer.h @@ -84,10 +84,8 @@ ScopedAdvancedTimer::ScopedAdvancedTimer(const char* message, T* obj) #define SCOPED_TIMER_VARNAME_AD(varname, name) #endif -#define ENSURE_SCOPED_ADVANCED_TIMER_ARG_IS_CONSTEXPR(s) ([](const char* ensure_name_must_be_a_compile_time_string_literal) \ - consteval -> const char* { \ - return ensure_name_must_be_a_compile_time_string_literal; \ - })(s) +consteval const char* ensure_name_must_be_a_compile_time_string_literal(const char* s) { return s; } +#define ENSURE_SCOPED_ADVANCED_TIMER_ARG_IS_CONSTEXPR(s) ensure_name_must_be_a_compile_time_string_literal(s) #define SCOPED_TIMER(name) ENSURE_SCOPED_ADVANCED_TIMER_ARG_IS_CONSTEXPR(name) ; SCOPED_TIMER_TR(name); SCOPED_TIMER_AD(name) #define SCOPED_TIMER_DYN(name) SCOPED_TIMER_DYN_TR(name); SCOPED_TIMER_AD(name)