freebsd-ports/devel/boost-libs/files/patch-boost_config_compiler_clang.hpp

34 lines
1 KiB
C++

--- boost/config/compiler/clang.hpp.orig 2023-08-08 21:02:50 UTC
+++ boost/config/compiler/clang.hpp
@@ -126,6 +126,16 @@
# endif
#endif
+//
+// Pick up _LIBCPP_VERSION definition if we are using libc++
+// If _LIBCPP_VERSION is not defined, then we will assume that
+// we are compiling on FreeBSD 9.x and using ancient libstdc++
+// from base gcc 4.2 with limited c++11 support.
+//
+#ifdef __cplusplus
+# include <ciso646>
+#endif
+
#if !__has_feature(cxx_auto_type)
# define BOOST_NO_CXX11_AUTO_DECLARATIONS
# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
@@ -208,7 +218,13 @@
# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
#endif
-#if !__has_feature(cxx_rvalue_references)
+//
+// clang on FreeBSD 9.x uses libstdc++ from base GCC 4.2.1 which
+// does not support std::forward which this feature requires.
+// Assume that the lack of a _LIBCPP_VERSION definition indicates
+// that is our environment.
+//
+#if !__has_feature(cxx_rvalue_references) || !defined(_LIBCPP_VERSION)
# define BOOST_NO_CXX11_RVALUE_REFERENCES
#endif