Index: third_party/boost/boost/type_traits/broken_compiler_spec.hpp |
diff --git a/third_party/boost/boost/type_traits/broken_compiler_spec.hpp b/third_party/boost/boost/type_traits/broken_compiler_spec.hpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fb51769d9d4e70223a533968b4be14efdab262c7 |
--- /dev/null |
+++ b/third_party/boost/boost/type_traits/broken_compiler_spec.hpp |
@@ -0,0 +1,117 @@ |
+ |
+// Copyright 2001-2003 Aleksey Gurtovoy. |
+// Use, modification and distribution are subject to 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). |
+// |
+// See http://www.boost.org/libs/type_traits for most recent version including documentation. |
+ |
+#ifndef BOOST_TT_BROKEN_COMPILER_SPEC_HPP_INCLUDED |
+#define BOOST_TT_BROKEN_COMPILER_SPEC_HPP_INCLUDED |
+ |
+#include <boost/mpl/aux_/lambda_support.hpp> |
+#include <boost/config.hpp> |
+ |
+// these are needed regardless of BOOST_TT_NO_BROKEN_COMPILER_SPEC |
+#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) |
+namespace boost { namespace detail { |
+template< typename T > struct remove_const_impl { typedef T type; }; |
+template< typename T > struct remove_volatile_impl { typedef T type; }; |
+template< typename T > struct remove_pointer_impl { typedef T type; }; |
+template< typename T > struct remove_reference_impl { typedef T type; }; |
+typedef int invoke_BOOST_TT_BROKEN_COMPILER_SPEC_outside_all_namespaces; |
+}} |
+#endif |
+ |
+// agurt, 27/jun/03: disable the workaround if user defined |
+// BOOST_TT_NO_BROKEN_COMPILER_SPEC |
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ |
+ || defined(BOOST_TT_NO_BROKEN_COMPILER_SPEC) |
+ |
+# define BOOST_TT_BROKEN_COMPILER_SPEC(T) /**/ |
+ |
+#else |
+ |
+// same as BOOST_TT_AUX_TYPE_TRAIT_IMPL_SPEC1 macro, except that it |
+// never gets #undef-ined |
+# define BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(trait,spec,result) \ |
+template<> struct trait##_impl<spec> \ |
+{ \ |
+ typedef result type; \ |
+}; \ |
+/**/ |
+ |
+# define BOOST_TT_AUX_REMOVE_CONST_VOLATILE_RANK1_SPEC(T) \ |
+ BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_const,T const,T) \ |
+ BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_const,T const volatile,T volatile) \ |
+ BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_volatile,T volatile,T) \ |
+ BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_volatile,T const volatile,T const) \ |
+ /**/ |
+ |
+# define BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T) \ |
+ BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_pointer,T*,T) \ |
+ BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_pointer,T*const,T) \ |
+ BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_pointer,T*volatile,T) \ |
+ BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_pointer,T*const volatile,T) \ |
+ BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_reference,T&,T) \ |
+ /**/ |
+ |
+# define BOOST_TT_AUX_REMOVE_PTR_REF_RANK_2_SPEC(T) \ |
+ BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T) \ |
+ BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T const) \ |
+ BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T volatile) \ |
+ BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T const volatile) \ |
+ /**/ |
+ |
+# define BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T) \ |
+ BOOST_TT_AUX_REMOVE_PTR_REF_RANK_2_SPEC(T) \ |
+ BOOST_TT_AUX_REMOVE_CONST_VOLATILE_RANK1_SPEC(T) \ |
+ /**/ |
+ |
+# define BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T) \ |
+ BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T*) \ |
+ BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T const*) \ |
+ BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T volatile*) \ |
+ BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T const volatile*) \ |
+ /**/ |
+ |
+# define BOOST_TT_BROKEN_COMPILER_SPEC(T) \ |
+ namespace boost { namespace detail { \ |
+ typedef invoke_BOOST_TT_BROKEN_COMPILER_SPEC_outside_all_namespaces \ |
+ please_invoke_BOOST_TT_BROKEN_COMPILER_SPEC_outside_all_namespaces; \ |
+ BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T) \ |
+ BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T) \ |
+ BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T*) \ |
+ BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T const*) \ |
+ BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T volatile*) \ |
+ BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T const volatile*) \ |
+ }} \ |
+ /**/ |
+ |
+# include <boost/type_traits/detail/type_trait_undef.hpp> |
+ |
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION |
+ |
+BOOST_TT_BROKEN_COMPILER_SPEC(bool) |
+BOOST_TT_BROKEN_COMPILER_SPEC(char) |
+#ifndef BOOST_NO_INTRINSIC_WCHAR_T |
+BOOST_TT_BROKEN_COMPILER_SPEC(wchar_t) |
+#endif |
+BOOST_TT_BROKEN_COMPILER_SPEC(signed char) |
+BOOST_TT_BROKEN_COMPILER_SPEC(unsigned char) |
+BOOST_TT_BROKEN_COMPILER_SPEC(signed short) |
+BOOST_TT_BROKEN_COMPILER_SPEC(unsigned short) |
+BOOST_TT_BROKEN_COMPILER_SPEC(signed int) |
+BOOST_TT_BROKEN_COMPILER_SPEC(unsigned int) |
+BOOST_TT_BROKEN_COMPILER_SPEC(signed long) |
+BOOST_TT_BROKEN_COMPILER_SPEC(unsigned long) |
+BOOST_TT_BROKEN_COMPILER_SPEC(float) |
+BOOST_TT_BROKEN_COMPILER_SPEC(double) |
+//BOOST_TT_BROKEN_COMPILER_SPEC(long double) |
+ |
+// for backward compatibility |
+#define BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(T) \ |
+ BOOST_TT_BROKEN_COMPILER_SPEC(T) \ |
+/**/ |
+ |
+#endif // BOOST_TT_BROKEN_COMPILER_SPEC_HPP_INCLUDED |