From 7979665362fe3f86f2ca9cc2a669cce262bd7322 Mon Sep 17 00:00:00 2001 From: Patrick Stewart Date: Tue, 6 Sep 2022 11:27:15 +0100 Subject: Use consteval in QT_PROPERTY_DEFAULT_BINDING_LOCATION Adds a consteval QPropertyBindingSourceLocation::fromStdSourceLocation to make sure the QPropertyBindingSourceLocation is created at compile time. This is a workaround for what seem to be bugs in MSVC 2019 and 2022, which otherwise don't regard QPropertyBindingSourceLocation(std::source_location::current()) as a constant expression. Fixes: QTBUG-106277 Pick-to: 6.4 6.2 Change-Id: Ic2379987b278cc0c43c1eb929120c99f5cd95fdf Reviewed-by: Marc Mutz --- src/corelib/kernel/qproperty.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/corelib/kernel') diff --git a/src/corelib/kernel/qproperty.h b/src/corelib/kernel/qproperty.h index c376fd9b2b..05ab3c89b6 100644 --- a/src/corelib/kernel/qproperty.h +++ b/src/corelib/kernel/qproperty.h @@ -18,7 +18,7 @@ #if defined(__cpp_lib_source_location) #define QT_SOURCE_LOCATION_NAMESPACE std #define QT_PROPERTY_COLLECT_BINDING_LOCATION -#define QT_PROPERTY_DEFAULT_BINDING_LOCATION QPropertyBindingSourceLocation(std::source_location::current()) +#define QT_PROPERTY_DEFAULT_BINDING_LOCATION QPropertyBindingSourceLocation::fromStdSourceLocation(std::source_location::current()) #endif #endif @@ -86,6 +86,12 @@ struct Q_CORE_EXPORT QPropertyBindingSourceLocation line = cppLocation.line(); column = cppLocation.column(); } + QT_POST_CXX17_API_IN_EXPORTED_CLASS + static consteval QPropertyBindingSourceLocation + fromStdSourceLocation(const std::source_location &cppLocation) + { + return cppLocation; + } #endif #ifdef __cpp_lib_experimental_source_location constexpr QPropertyBindingSourceLocation(const std::experimental::source_location &cppLocation) -- cgit v1.2.3