1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- # SYNOPSIS
- #
- # AX_CXX_DEF_TEMPLATE_ARG
- #
- # DESCRIPTION
- #
- # Check if the compiler supports default template arguments for function
- # templates and add necessary flags to CXXFLAGS.
- #
- m4_define([_AX_CXX_DEF_TEMPLATE_ARG_testbody], [[
- template <int T=0>
- int test(){ return T;};
- ]])
- AC_DEFUN([AX_CXX_DEF_TEMPLATE_ARG], [dnl
- AC_LANG_PUSH([C++])dnl
- ac_success=no
- AC_CACHE_CHECK(whether $CXX supports default template arguments by default,
- ax_cv_cxx_compile_template,
- [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_DEF_TEMPLATE_ARG_testbody])],
- [ax_cv_cxx_compile_template=yes],
- [ax_cv_cxx_compile_template=no])])
- if test x$ax_cv_cxx_compile_template = xyes; then
- ac_success=yes
- fi
- if test x$ac_success = xno; then
- for switch in -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x; do
- cachevar=AS_TR_SH([ax_cv_cxx_compile_template_$switch])
- AC_CACHE_CHECK(whether $CXX default template arguments with $switch,
- $cachevar,
- [ac_save_CXXFLAGS="$CXXFLAGS"
- CXXFLAGS="$CXXFLAGS $switch"
- AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_DEF_TEMPLATE_ARG_testbody])],
- [eval $cachevar=yes],
- [eval $cachevar=no])
- CXXFLAGS="$ac_save_CXXFLAGS"])
- if eval test x\$$cachevar = xyes; then
- CXXFLAGS="$CXXFLAGS $switch"
- ac_success=yes
- break
- fi
- done
- fi
- AC_LANG_POP([C++])
- if test x$ac_success = xno; then
- AC_MSG_ERROR([*** Compiler does not support default template arguments in function templates.
- Please use a different compiler or specify the necessary CXXFLAGS.])
- fi
- ])
|