From: Adam Date: Tue, 21 May 2013 01:55:49 +0000 (-0700) Subject: Merge pull request #548 from SaberUK/master+variadic-templates X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=0d95204c9848a56b02a1aca717ddca7f5e60e5a6;hp=7a67685bcb863b0d4199715e86697fee423596c2;p=user%2Fhenk%2Fcode%2Finspircd.git Merge pull request #548 from SaberUK/master+variadic-templates Add support for detecting C++11 variadic templates. --- 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 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 @@ -71,6 +71,24 @@ # 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.