diff options
-rw-r--r-- | configure.ac | 12 | ||||
-rw-r--r-- | solenv/gbuild/platform/com_MSC_defs.mk | 2 |
2 files changed, 9 insertions, 5 deletions
diff --git a/configure.ac b/configure.ac index 0e9d452ca591..ebf8b01ac657 100644 --- a/configure.ac +++ b/configure.ac @@ -6181,7 +6181,7 @@ CXXFLAGS_CXX11= if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then AC_MSG_CHECKING([whether $CXX supports C++11]) AC_MSG_RESULT(yes) - # MSVC supports (a subset of) CXX11 without any switch + CXXFLAGS_CXX11=-std:c++17 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then HAVE_CXX11= AC_MSG_CHECKING([whether $CXX supports C++17, C++14, or C++11]) @@ -6413,14 +6413,18 @@ AC_LANG_PUSH([C++]) save_CXXFLAGS=$CXXFLAGS CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11" AC_COMPILE_IFELSE([AC_LANG_SOURCE([ - #if !defined __cpp_guaranteed_copy_elision + // At least VS 2017 15.8.1 defines __cpp_guaranteed_copy_elision as 201606L without actually + // supporting it: + #if !defined __cpp_guaranteed_copy_elision || (defined _MSC_VER && !defined __clang__) struct S { private: S(S const &); public: - S copy() const { return *this; } + S(); + ~S(); }; - void f(S & s) { S c(s.copy()); } + S copy(); + void f() { S c(copy()); } #endif ])], [ AC_DEFINE([HAVE_CPP_GUARANTEED_COPY_ELISION],[1]) diff --git a/solenv/gbuild/platform/com_MSC_defs.mk b/solenv/gbuild/platform/com_MSC_defs.mk index 3791ccac65d6..252690c8c0a8 100644 --- a/solenv/gbuild/platform/com_MSC_defs.mk +++ b/solenv/gbuild/platform/com_MSC_defs.mk @@ -167,7 +167,7 @@ endif gb_CXXFLAGS := \ -utf-8 \ - -std:c++17 \ + $(CXXFLAGS_CXX11) \ -Gd \ -GR \ -Gs \ |