diff options
author | Adam <adam@sigterm.info> | 2013-05-20 18:55:49 -0700 |
---|---|---|
committer | Adam <adam@sigterm.info> | 2013-05-20 18:55:49 -0700 |
commit | 0d95204c9848a56b02a1aca717ddca7f5e60e5a6 (patch) | |
tree | cce044308a3225b2f0d4fdc59580474942d067fc | |
parent | 7a67685bcb863b0d4199715e86697fee423596c2 (diff) | |
parent | b40f197f20b2decac76dfa145f0bf99f0a0be612 (diff) |
Merge pull request #548 from SaberUK/master+variadic-templates
Add support for detecting C++11 variadic templates.
-rw-r--r-- | include/caller.h | 3 | ||||
-rw-r--r-- | include/compat.h | 18 |
2 files changed, 19 insertions, 2 deletions
diff --git a/include/caller.h b/include/caller.h index f69ff6796..c3a29e8c2 100644 --- a/include/caller.h +++ b/include/caller.h @@ -21,8 +21,7 @@ #pragma once -/* Pending some sort of C++11 support */ -#if 0 +#if defined HAS_CXX11_VARIADIC_TEMPLATES template<typename ReturnType, typename... Args> class CoreExport Handler : public classbase { diff --git a/include/compat.h b/include/compat.h index 299b32a88..41ae1bbaa 100644 --- a/include/compat.h +++ b/include/compat.h @@ -72,6 +72,24 @@ #endif /** + * These macros enable the detection of the C++11 variadic templates in + * compilers which support them. + */ +#if __cplusplus >= 201103L +# define HAS_CXX11_VARIADIC_TEMPLATES +#elif defined __clang__ +# if __has_feature(cxx_variadic_templates) +# define HAS_CXX11_VARIADIC_TEMPLATES +# endif +#elif (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) +# if defined __GXX_EXPERIMENTAL_CXX0X__ +# define HAS_CXX11_VARIADIC_TEMPLATES +# endif +#elif _MSC_VER >= 1700 +# define HAS_CXX11_VARIADIC_TEMPLATES +#endif + +/** * This macro allows methods to be marked as deprecated. To use this, wrap the * method declaration in the header file with the macro. */ |