summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam <adam@sigterm.info>2013-05-20 18:55:49 -0700
committerAdam <adam@sigterm.info>2013-05-20 18:55:49 -0700
commit0d95204c9848a56b02a1aca717ddca7f5e60e5a6 (patch)
treecce044308a3225b2f0d4fdc59580474942d067fc
parent7a67685bcb863b0d4199715e86697fee423596c2 (diff)
parentb40f197f20b2decac76dfa145f0bf99f0a0be612 (diff)
Merge pull request #548 from SaberUK/master+variadic-templates
Add support for detecting C++11 variadic templates.
-rw-r--r--include/caller.h3
-rw-r--r--include/compat.h18
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.
*/