diff options
author | Olivier Goffart <ogoffart@woboq.com> | 2014-08-23 18:26:01 +0200 |
---|---|---|
committer | Olivier Goffart <ogoffart@woboq.com> | 2014-10-24 22:22:09 +0200 |
commit | eaa4496efab49844dfe3b46ada73cc02f99dba7a (patch) | |
tree | bd443abbe9d5abe7b9752989316fdf27ea6cad56 | |
parent | 6e1718987e0f781bfd4f7036cc404f762c2301a8 (diff) |
Add Q_DECL_RELAXED_CONSTEXPR macro
Expands to constexpr if C++14 relaxed constepxr are supported by the compiler
[ChangeLog][QtCore] Added Q_DECL_RELAXED_CONSTEXPR for the corresponding C++14 feature
Change-Id: Id6b56b3a17da2ff838c80795e528e1247dc13f63
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-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 */ /*! |