diff options
Diffstat (limited to 'm4/ac_cxx_partial_specialization.m4')
-rw-r--r-- | m4/ac_cxx_partial_specialization.m4 | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/m4/ac_cxx_partial_specialization.m4 b/m4/ac_cxx_partial_specialization.m4 new file mode 100644 index 0000000..be78783 --- /dev/null +++ b/m4/ac_cxx_partial_specialization.m4 @@ -0,0 +1,40 @@ +# =========================================================================== +# http://autoconf-archive.cryp.to/ac_cxx_partial_specialization.html +# =========================================================================== +# +# SYNOPSIS +# +# AC_CXX_PARTIAL_SPECIALIZATION +# +# DESCRIPTION +# +# If the compiler supports partial specialization, define +# HAVE_PARTIAL_SPECIALIZATION. +# +# LICENSE +# +# Copyright (c) 2008 Todd Veldhuizen +# Copyright (c) 2008 Luc Maisonobe <luc@spaceroots.org> +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. + +AC_DEFUN([AC_CXX_PARTIAL_SPECIALIZATION], +[AC_CACHE_CHECK(whether the compiler supports partial specialization, +ac_cv_cxx_partial_specialization, +[AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([ +template<class T, int N> class A { public : enum e { z = 0 }; }; +template<int N> class A<double, N> { public : enum e { z = 1 }; }; +template<class T> class A<T, 2> { public : enum e { z = 2 }; }; +],[return (A<int,3>::z == 0) && (A<double,3>::z == 1) && (A<float,2>::z == 2);], + ac_cv_cxx_partial_specialization=yes, ac_cv_cxx_partial_specialization=no) + AC_LANG_RESTORE +]) +if test "$ac_cv_cxx_partial_specialization" = yes; then + AC_DEFINE(HAVE_PARTIAL_SPECIALIZATION,, + [define if the compiler supports partial specialization]) +fi +]) |