diff options
-rw-r--r-- | doc/global/qt-cpp-defines.qdocconf | 1 | ||||
-rw-r--r-- | src/corelib/global/qcompilerdetection.h | 11 | ||||
-rw-r--r-- | src/corelib/global/qglobal.cpp | 15 |
3 files changed, 26 insertions, 1 deletions
diff --git a/doc/global/qt-cpp-defines.qdocconf b/doc/global/qt-cpp-defines.qdocconf index 300c4402c1..f26437ef6c 100644 --- a/doc/global/qt-cpp-defines.qdocconf +++ b/doc/global/qt-cpp-defines.qdocconf @@ -28,6 +28,7 @@ Cpp.ignoretokens += \ Q_CORE_EXPORT_INLINE \ Q_DBUS_EXPORT \ Q_DECL_CONSTEXPR \ + Q_DECL_RELAXED_CONSTEXPR \ Q_DECL_CONST_FUNCTION \ Q_DECL_DEPRECATED \ Q_DECL_NOEXCEPT \ diff --git a/src/corelib/global/qcompilerdetection.h b/src/corelib/global/qcompilerdetection.h index 8e52c50322..8ac84599f2 100644 --- a/src/corelib/global/qcompilerdetection.h +++ b/src/corelib/global/qcompilerdetection.h @@ -916,12 +916,21 @@ # define Q_COMPILER_DEFAULT_DELETE_MEMBERS #endif -#ifdef Q_COMPILER_CONSTEXPR +#if defined(__cpp_constexpr) && __cpp_constexpr-0 >= 201304 # define Q_DECL_CONSTEXPR constexpr +# define Q_DECL_RELAXED_CONSTEXPR constexpr # define Q_CONSTEXPR constexpr +# define Q_RELAXED_CONSTEXPR constexpr +#elif defined Q_COMPILER_CONSTEXPR +# define Q_DECL_CONSTEXPR constexpr +# define Q_DECL_RELAXED_CONSTEXPR +# define Q_CONSTEXPR constexpr +# define Q_RELAXED_CONSTEXPR const #else # define Q_DECL_CONSTEXPR +# define Q_DECL_RELAXED_CONSTEXPR # define Q_CONSTEXPR const +# define Q_RELAXED_CONSTEXPR const #endif #ifdef Q_COMPILER_EXPLICIT_OVERRIDES diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index 04c38b5f27..d56854064d 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -3940,6 +3940,21 @@ bool QInternal::activateCallbacks(Callback cb, void **parameters) It expands to "constexpr" if your compiler supports that C++11 keyword, or to nothing otherwise. + + \sa Q_DECL_RELAXED_CONSTEXPR +*/ + +/*! + \macro Q_DECL_RELAXED_CONSTEXPR + \relates <QtGlobal> + + This macro can be used to declare an inline function that can be computed + at compile-time according to the relaxed rules from C++14. + + It expands to "constexpr" if your compiler supports C++14 relaxed constant + expressions, or to nothing otherwise. + + \sa Q_DECL_CONSTEXPR */ /*! |