Index: third_party/boost/boost/mpl/quote.hpp |
diff --git a/third_party/boost/boost/mpl/quote.hpp b/third_party/boost/boost/mpl/quote.hpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fbedf6c9018507f1f3fc3554e8d85f170f48ea79 |
--- /dev/null |
+++ b/third_party/boost/boost/mpl/quote.hpp |
@@ -0,0 +1,140 @@ |
+ |
+#if !defined(BOOST_PP_IS_ITERATING) |
+ |
+///// header body |
+ |
+#ifndef BOOST_MPL_QUOTE_HPP_INCLUDED |
+#define BOOST_MPL_QUOTE_HPP_INCLUDED |
+ |
+// Copyright Aleksey Gurtovoy 2000-2004 |
+// |
+// 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) |
+// |
+// See http://www.boost.org/libs/mpl for documentation. |
+ |
+// $Source$ |
+// $Date: 2006-05-02 23:27:58 -0400 (Tue, 02 May 2006) $ |
+// $Revision: 33913 $ |
+ |
+#if !defined(BOOST_MPL_PREPROCESSING_MODE) |
+# include <boost/mpl/void.hpp> |
+# include <boost/mpl/aux_/has_type.hpp> |
+#endif |
+ |
+#include <boost/mpl/aux_/config/ttp.hpp> |
+ |
+#if defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS) |
+# define BOOST_MPL_CFG_NO_QUOTE_TEMPLATE |
+#endif |
+ |
+#if !defined(BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS) \ |
+ && defined(BOOST_MPL_CFG_NO_HAS_XXX) |
+# define BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS |
+#endif |
+ |
+#include <boost/mpl/aux_/config/use_preprocessed.hpp> |
+ |
+#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ |
+ && !defined(BOOST_MPL_PREPROCESSING_MODE) |
+ |
+# define BOOST_MPL_PREPROCESSED_HEADER quote.hpp |
+# include <boost/mpl/aux_/include_preprocessed.hpp> |
+ |
+#else |
+ |
+# include <boost/mpl/limits/arity.hpp> |
+# include <boost/mpl/aux_/preprocessor/params.hpp> |
+# include <boost/mpl/aux_/config/ctps.hpp> |
+# include <boost/mpl/aux_/config/workaround.hpp> |
+ |
+# include <boost/preprocessor/iterate.hpp> |
+# include <boost/preprocessor/cat.hpp> |
+ |
+#if !defined(BOOST_MPL_CFG_NO_QUOTE_TEMPLATE) |
+ |
+namespace boost { namespace mpl { |
+ |
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) |
+ |
+template< typename T, bool has_type_ > |
+struct quote_impl |
+// GCC has a problem with metafunction forwarding when T is a |
+// specialization of a template called 'type'. |
+# if BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4)) \ |
+ && BOOST_WORKAROUND(__GNUC_MINOR__, BOOST_TESTED_AT(0)) \ |
+ && BOOST_WORKAROUND(__GNUC_PATCHLEVEL__, BOOST_TESTED_AT(2)) |
+{ |
+ typedef typename T::type type; |
+}; |
+# else |
+ : T |
+{ |
+}; |
+# endif |
+ |
+template< typename T > |
+struct quote_impl<T,false> |
+{ |
+ typedef T type; |
+}; |
+ |
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION |
+ |
+template< bool > struct quote_impl |
+{ |
+ template< typename T > struct result_ |
+ : T |
+ { |
+ }; |
+}; |
+ |
+template<> struct quote_impl<false> |
+{ |
+ template< typename T > struct result_ |
+ { |
+ typedef T type; |
+ }; |
+}; |
+ |
+#endif |
+ |
+#define BOOST_PP_ITERATION_PARAMS_1 \ |
+ (3,(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/quote.hpp>)) |
+#include BOOST_PP_ITERATE() |
+ |
+}} |
+ |
+#endif // BOOST_MPL_CFG_NO_QUOTE_TEMPLATE |
+ |
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS |
+#endif // BOOST_MPL_QUOTE_HPP_INCLUDED |
+ |
+///// iteration |
+ |
+#else |
+#define i_ BOOST_PP_FRAME_ITERATION(1) |
+ |
+template< |
+ template< BOOST_MPL_PP_PARAMS(i_, typename P) > class F |
+ , typename Tag = void_ |
+ > |
+struct BOOST_PP_CAT(quote,i_) |
+{ |
+ template< BOOST_MPL_PP_PARAMS(i_, typename U) > struct apply |
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) |
+ : quote_impl< |
+ F< BOOST_MPL_PP_PARAMS(i_, U) > |
+ , aux::has_type< F< BOOST_MPL_PP_PARAMS(i_, U) > >::value |
+ > |
+#else |
+ : quote_impl< aux::has_type< F< BOOST_MPL_PP_PARAMS(i_, U) > >::value > |
+ ::template result_< F< BOOST_MPL_PP_PARAMS(i_, U) > > |
+#endif |
+ { |
+ }; |
+}; |
+ |
+#undef i_ |
+#endif // BOOST_PP_IS_ITERATING |