From 9cf91f041bca3bbf4606ff2fa43cffb76a44c952 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 19 Feb 2020 09:24:49 +0100 Subject: [PATCH] Utility: added a CORRADE_CONSTEXPR14 macro. --- doc/corrade-changelog.dox | 3 +++ src/Corrade/Utility/Macros.h | 16 +++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/doc/corrade-changelog.dox b/doc/corrade-changelog.dox index 546a514db..a1afc1a17 100644 --- a/doc/corrade-changelog.dox +++ b/doc/corrade-changelog.dox @@ -43,6 +43,9 @@ namespace Corrade { - New @ref CORRADE_TARGET_BIG_ENDIAN macro. A variant of this macro called just @cpp CORRADE_BIG_ENDIAN @ce was used internally for a long time, now it's been exposed publicly. +- New @ref CORRADE_CONSTEXPR14 macro for marking @cpp constexpr @ce functions + that make use of C++14 relaxed constexpr rules but still need to work under + C++11 as well. @subsubsection corrade-changelog-latest-new-containers Containers library diff --git a/src/Corrade/Utility/Macros.h b/src/Corrade/Utility/Macros.h index d07d4c20e..23b968c32 100644 --- a/src/Corrade/Utility/Macros.h +++ b/src/Corrade/Utility/Macros.h @@ -26,7 +26,7 @@ */ /** @file - * @brief Macro @ref CORRADE_DEPRECATED(), @ref CORRADE_DEPRECATED_ALIAS(), @ref CORRADE_DEPRECATED_NAMESPACE(), @ref CORRADE_DEPRECATED_ENUM(), @ref CORRADE_DEPRECATED_FILE(), @ref CORRADE_DEPRECATED_MACRO(), @ref CORRADE_IGNORE_DEPRECATED_PUSH, @ref CORRADE_IGNORE_DEPRECATED_POP, @ref CORRADE_UNUSED, @ref CORRADE_ALIGNAS(), @ref CORRADE_NORETURN, @ref CORRADE_FALLTHROUGH, @ref CORRADE_THREAD_LOCAL, @ref CORRADE_ALWAYS_INLINE, @ref CORRADE_NEVER_INLINE, @ref CORRADE_FUNCTION, @ref CORRADE_LINE_STRING, @ref CORRADE_AUTOMATIC_INITIALIZER(), @ref CORRADE_AUTOMATIC_FINALIZER() + * @brief Macro @ref CORRADE_DEPRECATED(), @ref CORRADE_DEPRECATED_ALIAS(), @ref CORRADE_DEPRECATED_NAMESPACE(), @ref CORRADE_DEPRECATED_ENUM(), @ref CORRADE_DEPRECATED_FILE(), @ref CORRADE_DEPRECATED_MACRO(), @ref CORRADE_IGNORE_DEPRECATED_PUSH, @ref CORRADE_IGNORE_DEPRECATED_POP, @ref CORRADE_UNUSED, @ref CORRADE_ALIGNAS(), @ref CORRADE_NORETURN, @ref CORRADE_FALLTHROUGH, @ref CORRADE_THREAD_LOCAL, @ref CORRADE_CONSTEXPR14, @ref CORRADE_ALWAYS_INLINE, @ref CORRADE_NEVER_INLINE, @ref CORRADE_FUNCTION, @ref CORRADE_LINE_STRING, @ref CORRADE_AUTOMATIC_INITIALIZER(), @ref CORRADE_AUTOMATIC_FINALIZER() */ #include "Corrade/configure.h" @@ -345,6 +345,20 @@ regarding RAII. #define CORRADE_THREAD_LOCAL thread_local #endif +/** @hideinitializer +@brief C++14 constexpr +@m_since_latest + +Expands to @cpp constexpr @ce on C++14 and newer, empty on C++11. Useful for +selectively marking functions that make use of C++14 relaxed constexpr rules. +@see @ref CORRADE_CXX_STANDARD +*/ +#if CORRADE_CXX_STANDARD >= 201402 +#define CORRADE_CONSTEXPR14 constexpr +#else +#define CORRADE_CONSTEXPR14 +#endif + /** @hideinitializer @brief Always inline a function @m_since{2019,10}