aboutsummaryrefslogtreecommitdiff
path: root/devel/boost-libs/files/patch-boost_config_compiler_clang.hpp
blob: ed9ad4e0c569a57167402aa35af5ac1fbc70498e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
--- boost/config/compiler/clang.hpp.orig	2016-09-21 14:33:21 UTC
+++ boost/config/compiler/clang.hpp
@@ -110,6 +110,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
@@ -192,7 +202,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