Again for older compilers that claim C++17 but lack some
features
AM_CONDITIONAL(HAVE_CXX17, test x$ac_have_cxx_17 = xyes)
+# Compiler may announce C++17 support as above but may lack
+# some features
AC_MSG_CHECKING([that C++ compiler supports constexpr if])
AC_LANG(C++)
safe_CXXFLAGS=$CXXFLAGS
AM_CONDITIONAL(HAVE_CONSTEXPR_IF, test x$ac_have_constexpr_if = xyes)
+AC_MSG_CHECKING([that C++ compiler supports std::align_val_t])
+AC_LANG(C++)
+safe_CXXFLAGS=$CXXFLAGS
+CXXFLAGS=-std=c++17
+
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+#include <new>
+std::align_val_t a;
+])],
+[
+ac_have_align_val_t=yes
+AC_MSG_RESULT([yes])
+], [
+ac_have_align_val_t=no
+AC_MSG_RESULT([no])
+ ])
+CXXFLAGS=$safe_CXXFLAGS
+AC_LANG(C)
+
+AM_CONDITIONAL(HAVE_ALIGN_VAL_T, test x$ac_have_align_val_t = xyes)
+
AC_MSG_CHECKING([that C++ compiler can include <thread> header file])
AC_LANG(C++)
endif
if HAVE_FSIZED_DEALLOCATION
-check_PROGRAMS += sized_delete new_delete_mismatch_size
+check_PROGRAMS += sized_delete
endif
+if HAVE_ALIGN_VAL_T
+check_PROGRAMS += new_delete_mismatch_size
+endif
+
+
if HAVE_GNU_STPNCPY
check_PROGRAMS += stpncpy
endif