QProperty: Fix source_location feature testing
The presence of the source_location header does not guarantee the availablility of std::source_location. For instance, if using clang 11 with a modern libstdc++, the source_location header is available, but std::source_location is not available as it would require __builtin_source_location, which clang does not implement. Consequently, we need to explicitly check the feature test macro instead, and only use std::(experimental::)source_location when it is defined. Task-number: QTBUG-94194 Change-Id: If6fda9a1b98244b1f2944fff6fe1991def30fc0f Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 1924f78df68d69fa7c69c394c547307e25dfffe1) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
9c2660f685
commit
5f569ed01b
@ -51,15 +51,23 @@
|
||||
|
||||
#if __has_include(<source_location>) && __cplusplus >= 202002L && !defined(Q_CLANG_QDOC)
|
||||
#include <source_location>
|
||||
#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())
|
||||
#elif __has_include(<experimental/source_location>) && __cplusplus >= 201703L && !defined(Q_CLANG_QDOC)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !defined(QT_PROPERTY_COLLECT_BINDING_LOCATION) && __has_include(<experimental/source_location>) && __cplusplus >= 201703L && !defined(Q_CLANG_QDOC)
|
||||
#include <experimental/source_location>
|
||||
#if defined(__cpp_lib_experimental_source_location)
|
||||
#define QT_SOURCE_LOCATION_NAMESPACE std::experimental
|
||||
#define QT_PROPERTY_COLLECT_BINDING_LOCATION
|
||||
#define QT_PROPERTY_DEFAULT_BINDING_LOCATION QPropertyBindingSourceLocation(std::experimental::source_location::current())
|
||||
#else
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !defined(QT_PROPERTY_COLLECT_BINDING_LOCATION)
|
||||
#define QT_PROPERTY_DEFAULT_BINDING_LOCATION QPropertyBindingSourceLocation()
|
||||
#endif
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user