Index: third_party/boost/boost/type_traits/is_function.hpp |
diff --git a/third_party/boost/boost/type_traits/is_function.hpp b/third_party/boost/boost/type_traits/is_function.hpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d6458c459ded300ca5de487ab75e70eef8ad8f07 |
--- /dev/null |
+++ b/third_party/boost/boost/type_traits/is_function.hpp |
@@ -0,0 +1,95 @@ |
+ |
+// Copyright 2000 John Maddock (john@johnmaddock.co.uk) |
+// Copyright 2002 Aleksey Gurtovoy (agurtovoy@meta-comm.com) |
+// |
+// 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_IS_FUNCTION_HPP_INCLUDED |
+#define BOOST_TT_IS_FUNCTION_HPP_INCLUDED |
+ |
+#include <boost/type_traits/is_reference.hpp> |
+#include <boost/type_traits/detail/false_result.hpp> |
+#include <boost/config.hpp> |
+ |
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS) |
+# include <boost/type_traits/detail/is_function_ptr_helper.hpp> |
+#else |
+# include <boost/type_traits/detail/is_function_ptr_tester.hpp> |
+# include <boost/type_traits/detail/yes_no_type.hpp> |
+#endif |
+ |
+// should be the last #include |
+#include <boost/type_traits/detail/bool_trait_def.hpp> |
+ |
+// is a type a function? |
+// Please note that this implementation is unnecessarily complex: |
+// we could just use !is_convertible<T*, const volatile void*>::value, |
+// except that some compilers erroneously allow conversions from |
+// function pointers to void*. |
+ |
+namespace boost { |
+namespace detail { |
+ |
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS) |
+template<bool is_ref = true> |
+struct is_function_chooser |
+ : ::boost::type_traits::false_result |
+{ |
+}; |
+ |
+template <> |
+struct is_function_chooser<false> |
+{ |
+ template< typename T > struct result_ |
+ : ::boost::type_traits::is_function_ptr_helper<T*> |
+ { |
+ }; |
+}; |
+ |
+template <typename T> |
+struct is_function_impl |
+ : is_function_chooser< ::boost::is_reference<T>::value > |
+ ::BOOST_NESTED_TEMPLATE result_<T> |
+{ |
+}; |
+ |
+#else |
+ |
+template <typename T> |
+struct is_function_impl |
+{ |
+#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) |
+#pragma warning(push) |
+#pragma warning(disable:6334) |
+#endif |
+ static T* t; |
+ BOOST_STATIC_CONSTANT( |
+ bool, value = sizeof(::boost::type_traits::is_function_ptr_tester(t)) |
+ == sizeof(::boost::type_traits::yes_type) |
+ ); |
+#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) |
+#pragma warning(pop) |
+#endif |
+}; |
+ |
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) |
+template <typename T> |
+struct is_function_impl<T&> : public false_type |
+{}; |
+#endif |
+ |
+#endif |
+ |
+} // namespace detail |
+ |
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_function,T,::boost::detail::is_function_impl<T>::value) |
+ |
+} // namespace boost |
+ |
+#include <boost/type_traits/detail/bool_trait_undef.hpp> |
+ |
+#endif // BOOST_TT_IS_FUNCTION_HPP_INCLUDED |