]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/boost/fusion/support/config.hpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / boost / fusion / support / config.hpp
index 23554531b50a2b4ca74c7d01c7818b9c648ed4a1..dc614d9d33be4268cc50f8f537a8b274060998f2 100644 (file)
@@ -1,6 +1,6 @@
 /*=============================================================================
     Copyright (c) 2014 Eric Niebler
-    Copyright (c) 2014 Kohei Takahashi
+    Copyright (c) 2014,2015,2018 Kohei Takahashi
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -96,4 +96,35 @@ namespace std
 #define BOOST_FUSION_CONSTEXPR_THIS BOOST_CONSTEXPR
 #endif
 
+
+// Workaround for compilers not implementing N3031 (DR743 and DR950).
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1913)) || \
+    BOOST_WORKAROUND(BOOST_GCC, < 40700) || \
+    defined(BOOST_CLANG) && (__clang_major__ == 3 && __clang_minor__ == 0)
+# if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
+namespace boost { namespace fusion { namespace detail
+{
+    template <typename T>
+    using type_alias_t = T;
+}}}
+#   define BOOST_FUSION_DECLTYPE_N3031(parenthesized_expr) \
+        boost::fusion::detail::type_alias_t<decltype parenthesized_expr>
+# else
+#   include <boost/mpl/identity.hpp>
+#   define BOOST_FUSION_DECLTYPE_N3031(parenthesized_expr) \
+        boost::mpl::identity<decltype parenthesized_expr>::type
+# endif
+#else
+#   define BOOST_FUSION_DECLTYPE_N3031(parenthesized_expr) \
+        decltype parenthesized_expr
+#endif
+
+
+// Workaround for GCC 4.6 that rejects defaulted function with noexcept.
+#if BOOST_WORKAROUND(BOOST_GCC, / 100 == 406)
+#   define BOOST_FUSION_NOEXCEPT_ON_DEFAULTED
+#else
+#   define BOOST_FUSION_NOEXCEPT_ON_DEFAULTED BOOST_NOEXCEPT
+#endif
+
 #endif