]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Merge pull request #548 from SaberUK/master+variadic-templates
authorAdam <adam@sigterm.info>
Tue, 21 May 2013 01:55:49 +0000 (18:55 -0700)
committerAdam <adam@sigterm.info>
Tue, 21 May 2013 01:55:49 +0000 (18:55 -0700)
Add support for detecting C++11 variadic templates.

include/caller.h
include/compat.h

index f69ff67969a170c68eafaebfa4098dfa25b9102e..c3a29e8c2c0333d57412c7ccf0b053ddb18b797b 100644 (file)
@@ -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
 {
index 299b32a88bb560758252f7f15f0c640634b605fe..41ae1bbaa601c3fc43c656896c7d9d3438f77040 100644 (file)
 # define CXX11_OVERRIDE
 #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.