diff --git a/qtcompat_p.h b/qtcompat_p.h index 12024b2249..05f173dc99 100644 --- a/qtcompat_p.h +++ b/qtcompat_p.h @@ -1,64 +1,64 @@ /* Copyright (c) 2017 Kevin Funk +// COMPAT: qAsConst (from qglobal.h) #if QT_VERSION < QT_VERSION_CHECK(5,7,0) namespace QtPrivate { template struct QAddConst { typedef const T Type; }; } // this adds const to non-const objects (like std::as_const) template Q_DECL_CONSTEXPR typename QtPrivate::QAddConst::Type &qAsConst(T &t) Q_DECL_NOTHROW { return t; } // prevent rvalue arguments: template void qAsConst(const T &&) Q_DECL_EQ_DELETE; #endif #endif -// compat for Q_FALLTHROUGH +// COMPAT: Q_FALLTHROUGH (from qcompilerdetection.h) #if QT_VERSION < QT_VERSION_CHECK(5,8,0) -#if defined(__has_cpp_attribute) -# if __has_cpp_attribute(fallthrough) -# define Q_FALLTHROUGH() [[fallthrough]] -# elif __has_cpp_attribute(clang::fallthrough) -# define Q_FALLTHROUGH() [[clang::fallthrough]] -# elif __has_cpp_attribute(gnu::fallthrough) -# define Q_FALLTHROUGH() [[gnu::fallthrough]] -# endif +#if defined(__cplusplus) +#if QT_HAS_CPP_ATTRIBUTE(fallthrough) +# define Q_FALLTHROUGH() [[fallthrough]] +#elif QT_HAS_CPP_ATTRIBUTE(clang::fallthrough) +# define Q_FALLTHROUGH() [[clang::fallthrough]] +#elif QT_HAS_CPP_ATTRIBUTE(gnu::fallthrough) +# define Q_FALLTHROUGH() [[gnu::fallthrough]] +#endif #endif - #ifndef Q_FALLTHROUGH -# if defined(__GNUC__) && !defined(__INTEL_COMPILER) && (((__GNUC__ * 100) + __GNUC_MINOR__) >= 700) -# define Q_FALLTHROUGH() __attribute__((fallthrough)) -# else -# define Q_FALLTHROUGH() (void)0 -# endif +# if (defined(Q_CC_GNU) && Q_CC_GNU >= 700) && !defined(Q_CC_INTEL) +# define Q_FALLTHROUGH() __attribute__((fallthrough)) +# else +# define Q_FALLTHROUGH() (void)0 +#endif #endif #endif