diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2018-06-22 13:16:59 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2018-06-26 23:01:53 +0200 |
commit | 0f182b791622ad4491c8aabf8edce21a63839bdc (patch) | |
tree | 7f166beb01891d32d123969eaca6ad37e9b5ebae /compat/macros.hpp | |
parent | 085e99d1fcd7fc8265c69292ff3dbe30167d5b38 (diff) |
compat/meta: moved to macros already
Diffstat (limited to 'compat/macros.hpp')
-rw-r--r-- | compat/macros.hpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/compat/macros.hpp b/compat/macros.hpp index abe89c73..8b635201 100644 --- a/compat/macros.hpp +++ b/compat/macros.hpp @@ -51,9 +51,18 @@ # define PP_CAT1(x,y) x##y #endif +#define once_only(...) do { static bool once__ = false; if (!once__) { once__ = true; __VA_ARGS__; } } while(false) + #if defined __cplusplus -// from now only C++ macros +// from now only C++ + +#include <type_traits> + +template<typename t> +using cv_qualified = std::conditional_t<std::is_fundamental_v<std::decay_t<t>>, + std::decay_t<t>, + std::add_lvalue_reference_t<std::add_const_t<std::remove_reference_t<t>>>>; template<bool> [[deprecated]] constexpr force_inline void static_warn() {} @@ -70,4 +79,3 @@ constexpr force_inline void static_warn<true>() {} // end c++-only macros #endif -#define once_only(...) do { static bool once__ = false; if (!once__) { once__ = true; __VA_ARGS__; } } while(false) |